Debug::processException() – udelat samostanou metodu logException()
- Wosonj
- Člen | 36
Občas by se mi hodila možnost zotavit se z výjimky a pokračovat v běhu, ale tu výjimku stejně zalogovat. Teď k tomu lze použít Nette\Debug::processException(), ale má to vady – výjimka se uloží stejně jako ty ostatní, takže nepoznám, jestli se aplikace zotavila nebo ne. Kromě toho se zapíše do error.log řádek PHP Fatal error: Uncaught exception, což taky není pravda.
Navrhuji vyjmout logovací část do
<?php
public static logException(Exception $exception, $filename)
?>
která by pouze uložila výjimku a nedělala nic jiného. Jméno souboru by bylo dobré mít možnost zvolit, tím by se odlišily výjimky „Uncaught Exception“ od těch ostatních.
- Honza Kuchař
- Člen | 1662
proccessException se tak v produkčním režimu snad chová ne? Vlastně musí, já to tak používám a funguje to.
- Petr Motejlek
- Člen | 293
Mě není úplně jasné, k čemu by to mělo být – dělit výjimky na několik druhů, podle toho, jak jsem ss kterou počítal. Každá výjimka je špatná, ať už se s ní počítá, nebo ne…
Na druhou stranu si dovedu představit, že by se nějak rozdělovaly podle třídy, kterou mají, takže by se uchovávaly ve zvláštních adresářích např. InvalidArgumentException, InvalidStateException, AuthorizationException, atd. Šlo by pak hezky poznat jedním pohledem, že třeba všechny výjimky, co aplikace měla, vznikly, když někdo neoprávněně chtěl něco dělat (bude existovat jen adresář AuthorizationException).
- Honza Kuchař
- Člen | 1662
Na druhou stranu si dovedu představit, že by se nějak rozdělovaly podle třídy, kterou mají, takže by se uchovávaly ve zvláštních adresářích např. InvalidArgumentException, InvalidStateException, AuthorizationException, atd. Šlo by pak hezky poznat jedním pohledem, že třeba všechny výjimky, co aplikace měla, vznikly, když někdo neoprávněně chtěl něco dělat (bude existovat jen adresář AuthorizationException).
To je geniální nápad! Máš bod!
K tomu logování: Ano, občas by se to hodilo, ale už to něco na logování vzniklo (a funguje to dobře): https://componette.org/search/?…
Editoval honzakuchar (19. 4. 2010 10:01)
- David Grudl
- Nette Core | 8218
V současné verzi už to jde pomocí Debug::log($exception). Závažnost logované výjimky můžeš ovlivnit druhým parametrem, který vlastně rozhoduje o tom, má-li se administrátorovi poslat email.