Autor | Zpráva | ||
---|---|---|---|
jan99 Profil * |
#1 · Zasláno: 12. 6. 2012, 18:00:07
Ahoj, v PHP kodu mam u nekterych radku zamerne znak pro potlaceni chyby "@". Ale funkce my_error_handler tuto chybu stejne nakonec zachyti, coz nechci (tzn. vypise se var_dump()).
Potrebuju nejak php rict aby funkce "my_error_handler" presla chyby u radku kde je znak pro potlaceni chyby.. Pro zachytavani chyb pouzivam toto: set_error_handler('my_error_handler', E_ALL | E_STRICT); function my_error_handler($errno, $errstr, $errfile, $errline){ switch ($errno) { case E_USER_ERROR: var_dump($errstr,$errfile,$errline); break; case E_USER_WARNING: var_dump($errstr,$errfile,$errline); break; case E_USER_NOTICE: var_dump($errstr,$errfile,$errline); break; default: var_dump($errstr,$errfile,$errline); break; } return TRUE; } Diky |
||
pcmanik Profil |
#2 · Zasláno: 12. 6. 2012, 19:10:04
jan99:
Error handler zaznamenavy vsetky chyby, a pouzivat @ a este aj chyby nelogovat mi pride dost hlupost, mas na to nejaky dovod? |
||
Jan Tvrdík Profil |
#3 · Zasláno: 12. 6. 2012, 19:42:41
pcmanik:
„pouzivat @ a este aj chyby nelogovat mi pride dost hlupost“ Hloupost to není, spousta věcí se např. kvůli atomicitě bez @ řešit nedá. jan99: @ operátor funguje tak, že před příkazem zavolá error_reporting(0) a po příkazu vrátí error reporting na původní hodnotu. Můžeš tedy testovat, zda daná chyba má být ignorována nebo ne. ($errno & error_reporting()) === $errno |
||
jan99 Profil * |
#4 · Zasláno: 13. 6. 2012, 13:40:21
A dá se specialne vypnout reporting jen pro chyby typu "Undefined index". Vim ze to spada pod E_NOTICE, jenze nechci vypinat cele E_NOTICE, jen ty nedefinovane indexy...
Diky |
||
Tori Profil |
#5 · Zasláno: 13. 6. 2012, 14:15:06
jan99:
A není jednodušší prostě psát tak, aby se tahle chyba neobjevovala? Před použitím potencionálně nedefinovaného indexu ověrovat jestli existuje? |
||
Časová prodleva: 12 let
|
0