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.