Przejdź do głównej zawartości

Obsługa błędów

Gdy krok się nie powiedzie, proces zatrzymuje się i zgłasza błąd. Błąd wędruje w górę, do procesu, który go wywołał. Jeśli nikt go nie obsłuży, cały proces kończy się błędem.

Zamówienie bez pozycji nie ma sensu. W CalculateOrderTotal dodaj If: czy w Lines jest więcej niż 0 pozycji? Przenieś istniejące aktywności i kontenery do gałęzi „tak”. W drugiej gałęzi dodaj RaiseError z komunikatem, np. “Order has no lines”. RaiseError zatrzymuje proces z Twoim własnym komunikatem.

W PlaceOrder dodaj CatchError. Próbuje wykonać swoje kroki (po lewej, blok try), a gdy któryś się nie powiedzie, przejmuje sterowanie (po prawej, blok catch).

  1. Nazwij zmienną błędu (fault): błąd trafia do niej i można go odczytać.
  2. Przenieś ExecuteProcess i SetVariable Status = "Placed" do bloku try.
  3. Skopiuj SetVariable Status do bloku catch i ustaw wartość “Rejected”.

Błędne zamówienie dostaje teraz status Rejected, zamiast wywracać cały proces.

Blok catch może łapać dowolny błąd albo tylko błędy z określonym kontekstem. Bloków catch może być kilka. Są sprawdzane po kolei i wygrywa pierwszy pasujący, więc szczegółowe umieść na początku, a ogólny na końcu.