E’ stato riscontrato che la classe Exception del PHP5 non funziona correttamente, infatti ritornerebbe un numero di riga e un nome di file errati e non memorizzerebbe il valore ‘errcontext’ associato all’errore PHP.

Per ovviare a questo problema è necessario estendere la classe Exception in questo modo:
class STEM_ErrorException extends Exception
{
private $m_arContext;
/**
* Costruttore
*/
public function __construct($vMessage, $vCode, $vFile, $vLine, $arContext = null)
{
parent::__construct($vMessage, $vCode);
$this->file = $vFile;
$this->line = $vLine;
$this->m_arContext = $arContext
}
}
Innanzitutto è necessario definire una funzione per gestire l’errore, inoltre dobbiamo anche scrivere due funzioni per impostare e ripristinare il gestore di errore alla nostra funzione. Per fare questo, abbiamo tre metodi di scrittura in una classe astratta.
abstract class STEM_ErrorHandler
{
public static function Initialize()
{
set_error_handler(array("STEM_ErrorHandler", "HandleError"));
}
public static function Uninitialize()
{
restore_error_handler();
}
public static function HandleError($errno, $errstr, $errfile, $errline, $errcontext)
{
throw new STEM_ErrorException($errstr, $errno, $errfile, $errline, $errcontext);
}
}
Ora dobbiamo testare il tutto, creiamo un file che gemeri un errore. Prima di sollevare l’evento dell’errore, inizializzaziamo la classe gestore con Initialize(), poi alla fine rimuoviamo la classe Uninitialize().
E ‘importante controllare i numeri di linea che compaiono sul messaggio che la funzione andrà a stampare a video!
Hai trovato interessante questo post? Iscriviti al nostro Feed RSS per non perderti nemmeno un aggiornamento. Grazie per la visita... a presto!
Post che potrebbero interessarti:
Leave a reply