Dlaczego obsługa błędów jest niezbędna?
Każde rozwiązanie produkcyjne — niezależnie od technologii — może napotkać nieoczekiwane sytuacje: niedostępność serwera, brak uprawnień, błędne dane wejściowe, przekroczenie czasu odpowiedzi. Jeśli nie obsłużysz tych przypadków, użytkownik zobaczy enigmatyczny komunikat systemowy albo — jeszcze gorzej — cicho zostawi niezapisane dane nie wiedząc, że coś poszło nie tak.
Dobra obsługa błędów chroni użytkownika, upraszcza diagnozowanie problemów i sprawia, że rozwiązanie sprawia wrażenie dopracowanego i profesjonalnego.
Try-Catch-Finally w Power Automate
W Power Automate standardowym wzorcem obsługi błędów jest podział przepływu na zakresy (Scope):
- Scope Try — zawiera wszystkie główne akcje przepływu. Jeśli wszystko idzie dobrze, ten zakres kończy się sukcesem.
- Scope Catch — wykonuje się wyłącznie wtedy, gdy Scope Try zakończy się błędem lub przekroczy limit czasu. W konfiguracji "Configure run after" ustaw: Failed / Timed out.
- Scope Finally — wykonuje się zawsze, niezależnie od tego, czy poprzednie zakresy zakończyły się sukcesem czy błędem. W "Configure run after" ustaw: Is successful + Has failed + Has timed out.
Typowa zawartość Scope Catch to wysłanie maila z informacją o błędzie do administratora lub właściciela procesu. Warto też dodać akcję Terminate ze statusem "Failed" — bez niej przepływ zakończy się ze statusem "Succeeded" nawet jeśli Catch się wykonał, co utrudnia monitorowanie.
Microsoft udostępnia gotowy szablon tego wzorca w zakładce Templates Power Automate — możesz go stamtąd zaimportować i dostosować do własnych przepływów.
Walidacja formularza w Power Apps — funkcja If
Pierwszy poziom obsługi błędów w aplikacji to walidacja danych przed ich zapisaniem. Użytkownik kliknął "Zapisz" z pustymi polami? Zamiast pozwolić na zapis pustego rekordu, sprawdź warunki funkcją If():
If(IsBlank(txtTemat.Text) || IsBlank(txtOpis.Text); Notify("Uzupełnij wymagane pola"; NotificationType.Warning); Patch(...))
Funkcja Notify() wyświetla użytkownikowi komunikat w pasku powiadomień. Dostępne typy powiadomień:
- Warning — żółty pasek (np. brak wymaganych danych)
- Error — czerwony pasek (błąd systemowy)
- Success — zielony pasek (operacja zakończona powodzeniem)
- Information — niebieski pasek (informacja neutralna)
Obsługa błędów zapisu — funkcja IfError
Walidacja formularza nie wystarczy — co jeśli zapis do SharePoint się nie powiedzie z powodów niezależnych od użytkownika? Tutaj wchodzi funkcja IfError():
IfError(Patch(ZgloszeniaIT; Defaults(ZgloszeniaIT); {...}); Notify("Błąd zapisu danych. Spróbuj ponownie."; NotificationType.Error); Notify("Dane zapisane pomyślnie."; NotificationType.Success))
Składnia IfError():
- Argument 1 — operacja, którą próbujemy wykonać (np. Patch)
- Argument 2 — co zrobić, jeśli operacja zwróci błąd
- Argument 3 — co zrobić, jeśli operacja zakończy się sukcesem
Dzięki temu użytkownik zawsze wie, co się wydarzyło — i może podjąć odpowiednie działanie, np. spróbować ponownie lub zgłosić problem do IT.
Podsumowanie: dwa poziomy ochrony
Kompletna obsługa błędów w rozwiązaniach Power Platform opiera się na dwóch warstwach:
- Power Automate: wzorzec Try-Catch-Finally zabezpiecza przepływy przed cichymi błędami i zapewnia powiadomienia administratorów w przypadku awarii
- Power Apps: walidacja z
If()przed zapisem +IfError()przy zapisie zapewniają komunikację z użytkownikiem na każdym etapie
Te mechanizmy zamykają podstawowy zestaw umiejętności potrzebny do budowania produkcyjnych rozwiązań. W kolejnym odcinku wracamy do praktyki — budujemy kompleksowe rozwiązanie end-to-end od początku, tym razem z pełnym planem i przemyślaną strukturą danych.