Page tree
Skip to end of metadata
Go to start of metadata

Mechanizmus ošetrenia chýb sa riadi nasledujúcimi akciami:

Akcia ON ERROR nastavuje správanie interpreteru skriptu pri výskyte chyby nasledovne:

ON ERROR NONE - nastaví štandardné spracovanie chyby (ukončenie vykonávania skriptu).

ON ERROR Label - nastavenie obsluhy chýb. Ak nastane chyba, skript sa neukončí, ale vykoná sa skok na dané návestie (Label). Preddefinované lokálne premenné _ERR_NR, _ERR_MSG a _ERR_LINE sú predtým automaticky naplnené popisom chyby. V rámci obsluhy chyby je možné vykonať akcie RETRY (opakované vykonanie akcie, ktorá spôsobila chybu) alebo RESUME (pokračovanie skriptu za akciou, ktorá spôsobila chybu). Návestie sa musí nachádzať v rovnakej procedúre (alebo inicializačnej časti), ako akcia.

ON ERROR OFF - ak sa vyskytne chyba, postupnosť spracovanie akcií sa nepreruší a nastavia sa len preddefinované lokálne premenné _ERR_NR, _ERR_MSG a _ERR_LINE. Následným testom _ERR_NR je možné chybu detekovať a ošetriť. V tomto režime sa prístupom na premennú _ERR_NR (prečítaním hodnoty) táto premenná automaticky nastaví na hodnotu _ERR_NO_ERROR.

ON ERROR ON - obnovenie obsluhy chýb do stavu, ktorý bol pred akciou ON ERROR OFF.

Poznámka:
Zmena nastavenia správania sa pri chybe je platná len v rámci kontextu (procedúry). Ak je akcia použitá v rámci procedúry, po jej ukončení sa zmeny v nastavení zrušia a nastavia do stavu, aký bol definovaný pred volaním danej procedúry.

Ak vznikne chyba, v rámci procedúry sú podľa aktuálneho nastavenia obsluhy chýb, možnosti:

  • Ak procedúra definuje obsluhu chyby ON ERROR, táto chyba sa spracuje podľa vyššieho popisu.
  • Ak procedúra nedefinuje obsluhu chyby, táto bude ukončená a chyba sa prejaví tak, ako keby vznikla na akcii volania procedúry:

PROCEDURE Proc
  IF 1
  THEN     ; chyba vznikla tu
   RETURN
  ENDIF
END Proc


BEGIN
  CALL Proc
END

Takto napísaný event sa ukončí chybou.

PROCEDURE Proc
 IF 1 THEN     ; chyba vznikla tu
  RETURN
 ENDIF
END Proc


BEGINN
 ON ERROR ErrorHandler

 CALL Proc
END
ErrorHandler:
END

Chyba, ktorá vznikne v procedúre Proc, spôsobí jej ukončenie. Keďže chyba nie je obslúžená, táto sa prejaví tak, ako keby vznikla spracovaním akcie CALL Proc. Zavolá sa, teda, obsluha chyby ErrorHandler.

PROCEDURE Proc
 ON ERROR ErrorHandlerProc
 IF 1 THEN     ; chyba vznikla tu
  RETURN
 ENDIF
 RETURN


ErrorHandlerProc:
  RETURN
END Proc


BEGIN
 ON ERROR ErrorHandler
 CALL Proc
END
ErrorHandler:
END

Chyba, ktorá vznikne v procedúre Proc, spôsobí skok na obsluhu ErrorHandlerProc. Keďže chyba je obslúžená, procedúra sa normálne ukončí a obsluha ErrorHandler sa nezavolá.

Chybový stav je popísaný číslom riadku, na ktorom chyba vznikla (z pohľadu ESL skriptu, ktorý popis chyby tvorí), chybovým kódom (Chybové stavy) a v niektorých prípadoch bližším popisom chyby.

Ďalej nasleduje úplný výpis volaní (akcie CALL), prostredníctvom ktorých bola akcia, ktorá skončila s chybou, vykonaná. Podrobný popis výpisu volaní je uvedený pri popise funkcie %GetCallChain.

Write a comment…