Fatal Error handling

Fatal Error handling
2015-05-23T08:12:57+02:00
2015-05-23T20:58:14+02:00
2022-12-02T13:15:37+01:00
bladerunner
Sziasztok!

Adott egy webalkalmazás, ahol a php a json/rest szervízekért felelős. Ezért ha futás közben hibát kapok azt igyekszem elkapni és json válasz egy mezőjébe tenni, hogy a js rész majd feltudja dolgozni.

Viszont ha Fatal Error-t kapok akkor azt sehogy sem tudom elkapni, és exception-t csinálni belőle. Sőt azt sem tudom megállítani, hogy ilyenkor megálljon a program futása.
set_error_handler-t beállítottam, de ez néhány hiba típust nem kezel. 

Van arra valami mód, hogy fatal error-t lekezeljem php-ban?
Mutasd a teljes hozzászólást!
Van. Ha regisztrálsz egy shutdown függvényt - register_shutdown_function() - akkor ezt akkor is meghívja ha olyan error miatt áll le a script amit a set_error_handler() nem tudott lekezelni: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR és E_COMPILE_WARNING.

A Yii2 legalább is így csinálja:
- regisztrál egy exception handlert - set_exception_handler()
- regisztrál egy error handlert - set_error_handler() - ez azért kell, hogy a sima errorból Exception-t csináljon, így egy helyen tudja lekezelni a hibákat és a kivételeket.
- majd regisztrál egy shutdown függvényt, ahol ha az utolsó hiba fatal error volt - isFatalError() - akkor még loggol egyet és ha szükséges, akkor lerendereli a szép hibaképernyőt a natúr sima fehér képernyő helyett.
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd