Autor Zpráva
jan99
Profil *
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
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
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 *
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
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?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: