Sei qui: Home » Guide » PHP » Guida completa a PHP » La gestione degli errori

La gestione degli errori

Ogni programmatore deve confrontarsi con un problema quas

i "fisiologico" alla programmazione: la possibilità di commettere degli errori. Dal punto di vista del codice esistono due tipi di errore:

  1. L'errore di sintassi.
  2. L'errore logico.
Il primo errore viene commesso quando non si rispetta una regola del linguaggio di programmazione; ad esempio, in PHP, quando viene omesso il punto e virgola alla fine di una istruzione. Il secondo errore, che è il più difficile da individuare, viene commesso quando la sintassi del codice è corretta ma si sbaglia la logica di programmazione. Ambedue tipi di errori sono molto comuni in progetti più o meno estesi e in questa parte ci preoccuperemo di analizzare i maggiori problemi che uno sviluppatore PHP può incontrare nella stesura del codice.

Quando PHP incontra un errore, se configurato in tal proposito, restituisce una stringa contente il tipo di errore, il nome del file nel quale si è riscontrato e la linea. Questo aiuta moltissimo lo sviluppatore a individuare il tipo di errore ed il punto preciso dove si è riscontrato.

La gestione degli errori in PHP

Per quello che riguarda gli errori di sintassi l'interprete PHP presenta a schermo gli errori che incontra e, in base alla loro gravità, interrompe o prosegue il parsing dello script. In PHP ci sono differenti livelli di errore ma i principali sono tre: notice, warning, fatal. Ovviamente esiste la possibilità di impostare che tipo di errore deve essere mostrato o, in alternativa, non mostrare alcun errore.

Il notice, come il nome stesso suggerisce, rappresenta quel tipo di errore che di per sé è lieve, ad esempio un array usato senza che queste esista. Visto che può portare ad errori imprevisti il programmatore potrebbe essere avvantaggiato nella correzione dei bug leggendo i notice.

Il warning è un errore intermedio in una scala di rilevanza. Con la presenza di questo tipo di errore non viene interrotta l'esecuzione dello script ma il programmatore trae vantaggio dal sapere che un errore che potrebbe avere effetti imprevisti sul codice è stato rilevato nel codice

L'errore di tipo fatal è quell'errore che impedisce a PHP di continuare l'interpretazione del sorgente. Gli errori fatal sono molto comuni e, ovviamente, abbastanza noiosi da affrontare. Alcuni esempi di errori di questo tipo sono quelli nei quali il programmatore richiama una funzione non esistente, ad esempio:
<?php
 CaricaConfigurazione(); // La funzione non esiste, viene restituito un errore di tipo fatal
 ?>

Abilitare e disabilitare l'error reporting

PHP mette a disposizione la funzione error_reporting(livello) mediante la quale si istruisce il compilatore a mostrare, o non mostrare, le tipologie di errore che abbiamo appena analizzato. Per determinare il livello esistono molte costanti da utilizzare, nel nostro caso esamineremo le cinque più significative:
Costante Descrizione
E_ERROR Tutti gli errori di tipo fatal.
E_WARNING Tutti i warnings.
E_PARSE Tutti gli errori di sintassi.
E_NOTICE Tutti gli errori di tipo notice
E_ALL Tutti gli errori, a prescindere dal tipo.
Per poter una o più di queste costanti è necessario passare alla funzione error_reporting il nome della costante come argomento e se vogliamo includere una ulteriore costante useremo il segno di unione (|) altrimenti quello di negazione (^).

Ad esempio le volessimo mostrare tutti gli errori useremo questo codice:
<?php
 error_reporting(E_ALL);
 $eventi[1] = 'appuntamento';
 $eventi[2] = 'riunione';
 echo $eventi[3]; // Non esiste, mostra un notice
 ?>


Se volessimo mostrare tutti gli errori di tipo fatal e warning ma non i notice useremo questo codice:
<?php
 error_reporting(E_ALL ^ E_NOTICE);
 $eventi[1] = 'appuntamento';
 $eventi[2] = 'riunione';
 echo $eventi[3]; // Non viene mostrato alcun errore
 include('file_non_esistente.php'); // Il file non esiste, viene riportato un warning
 $oggetto->test() // Non esiste l'oggetto $oggetto, viene riportato un errore di tipo fatal
 ?>

Alcuni consigli

La visualizzazione degli errori è di fondamentale importanza per il programmatore che, in questo modo, può essere informato di imperfezioni del codice ma, allo stesso tempo, rappresenta un potenziale pericolo di sicurezza. Un utente malintenzionato potrebbe sfruttare le informazioni contenute nel messaggio di errore per condurre un attacco contro il sito che, ovviamente, si traduce in perdite di tempo e potenziali fughe di dati personali. Per questo motivo è consigliabile non mostrare gli errori nei siti pubblicati su internet ma fare in modo che questi vengano visualizzati soltanto negli ambienti di produzione o debug. Fin quando il sito viene eseguito sulla macchina dello sviluppatore non ci sono problemi a vedere gli errori ma quando questo viene eseguito ed è visibile da tante persone, e dai motori di ricerca, allora potrebbero esserci dei problemi.
Successivo: Apache
Ricerca
News
giu 3, 2010
È stato appena rilasciato, dalla società JetBrains, un nuovo IDE per la creazione rapida di progetti Web/PHP/MySQL.

tag: phpstorm, IDE, php

apr 3, 2010
Rilasciato JQuery UI in versione stabile. La release 1.8, oltre a numerosi bugfix, possiede due interessanti Widgets.

tag: jquery

mar 12, 2010
È stato da poco rilasciato il famoso forum SMF in versione 2.0RC3; tanti bugfix e un'aspetto più consolidato.

tag: smf, vbulletin, forum

mar 11, 2010
Un articolo "passo-passo" che spiega come configurare Google Apps con un qualsiasi tipo di pacchetto TopHost. Un'accoppiata vincente!

tag: TopHost, Google Apps

mar 9, 2010
Inserita la guida completa a PHP

tag: howtoprog

mar 8, 2010
Il sito è in fase di restyling; ci scusiamo per gli eventuali disagi ma, come vedrete a breve, vale la pena pazientare qualche giorno!