dic
3
2010

Gestione centralizzata degli errori in PHP

closeQuesto articolo è stato pubblicato 1 anno 5 mesi 15 giorni giorni fa quindi alcuni contenuti o informazioni presenti in esso potrebbero non essere più validi. Questo sito non è responsabile per eventuali errori causati da questo problema.

Una delle cose più difficili da gestire durante lo sviluppo di un’applicazione PHP è la gestione degli errori in maniera unificata. Questo avviene fondamentalmente perché le eccezioni sono state introdotte solo dalla versione 5 e tutte le funzioni del core non lanciano eccezioni ma una serie di errori di diverso tipo e diversa gravità. Per un elenco dei tipi di errore cliccate qui.

Utilizzare il sistema di error reporting classico di PHP è limitante. Vediamo quindi come aggirare questo problema e gestire il tutto in maniera unificata attraverso le eccezioni.

Innanzitutto utilizziamo la funzione set_error_handler per dire che vogliamo gestire in maniera personalizzata gli errori che si verificheranno:

set_error_handler('errorHandler',error_reporting());

In questo modo avremo definito che al verificarsi di un errore nell’applicazione deve essere invocata la funzione errorHandler (che dovremo definire). Il secondo parametro indica per quali tipi di errori vogliamo che questo succeda. Passando come parametro la funzione error_reporting() facciamo si che questo avvenga per tutti gli errori abilitati sul nostro server.

A questo punto scriviamo la funzione errorHandler:

function errorHandler($severity, $message, $filename, $lineno) {
if (error_reporting() == 0)
return;
if (error_reporting() && $severity){
throw new ErrorException($message);
return false;
}
}

Questa funzione fa si che ogni volta che si verifichi un errore venga generata un’eccezione usando lo stesso messaggio di testo.

Fatto ciò, in ogni funzione/classe/metodo del sistema potrete utilizzare il costrutto try…catch per catturare le eccezioni e gestirle in maniera pulita e unificata.

1 Comment + Add Comment

Leave a comment

*