setErrorHandler()

Approfondendo la gestione personalizzata degli errori in PHP mi sono imbattuto in questo script

$arrErrorType = array

               (

               E_ERROR => "E_ERROR [1] (Fatal run-time errors)",  

               E_WARNING => "E_WARNING [2] (Run-time warnings)",                      

               E_PARSE => "E_PARSE [4] (Compile-time parse errors)",                      

               E_NOTICE => "E_NOTICE ([8] Run-time notices)",                      

               E_CORE_ERROR => "E_CORE_ERROR [16] (Fatal errors that occur during PHP's initial startup)", 

               E_CORE_WARNING => "E_CORE_WARNING [32] (Warnings that occur during PHP's initial startup)",                      

               E_COMPILE_ERROR => "E_COMPILE_ERROR [64] (Fatal compile-time errors)",                                                          

               E_COMPILE_WARNING => "E_COMPILE_WARNING [128] (Compile-time warnings)",                      

               E_USER_ERROR => "E_USER_ERROR [256] (User-generated error message)",                      

               E_USER_WARNING => "E_USER_WARNING [512] (User-generated warning message)",                     

               E_USER_NOTICE => "E_USER_NOTICE [1024] (User-generated notice message)"

               );  

function errorHandler($errno, $errstr, $errfile, $errline)  {

   echo "eseguita";

   global $arrErrorType;   

   if (isset($arrErrorType[$errno]))  $strType = $arrErrorType[$errno];

   else $strType = "Unknown error [$errno]";

   echo $strMsg = "--- $strType ---\nError: $errstr\nFile: \"$errfile\"\nLine: $errline";   

}  

error_reporting(E_ALL);

set_error_handler("errorHandler");

che, in teoria, dovrebbe dare la possibilitą di gestire in modo personalizzato qualsiasi tipo di errore, del resto anche il manuale afferma che con set_error_handler()

il gestore degli errori standard di PHP viene completamente saltato

Tuttavia mi pare che gli unici errori "customizzabili" siano E_WARNING,  E_NOTICE, E_USER_ERROR, E_USER_WARNING and E_USER_NOTICE, o no?

Se, per esempio, dimentico un ; o metto una } in pił, ovviamente il gestore degli errori standard mi avverte del parse error e non esegue lo script, giusto?

inviato 9 anni fa
usecram
X 0 X

esatto!  :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Ok grazie  :bye:

risposto 9 anni fa
usecram
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda