Exception Handling in PHP 5

03/04/2006

Nello scripting server side in PHP 5, gli errori possono gestiti tramite eccezioni; questo approccio che i programmatori in Java o C++ conosceranno già molto bene, consente di separare nettamente in fase di sviluppo la gestione degli errori dalla logica dell'applicativo.

Dato che nella programmazione, gli errori sono inevitabili anche quando si assume una certa pratica nella digitazione del listato, diviene necessario creare degli accorgimenti che limitino il più possibile le perdite di tempo legate alla ricerca dei frammenti di codice errati.

Fino al PHP versione 4 non c'era molto da fare, si scriveva il codice e poi lo si testava, gli errori venivano fuori e si andava alla ricerca della riga affetta dall'errore per poi applicare la soluzione adeguata.
In PHP 5 abbiamo invece qualche strumento in più per l'analisi del nostro codice e per la razionalizzazione dei tempi di intervento a carico delle istruzioni mal digitate.

La logica che stà alla base dell'Exception Handling in PHP 5 prende il nome di try (prova), throw (lancia) and catch (cattura), per cui il controllo delle eccezioni emula in parte l'azione svolta dalle istruzioni di controllo o condizionali come if ed else.

Se per esempio salviamo il seguente codice in una pagina chiamata eccezione.php, e lo lanciamo:


prevedibilmente, il risultato ottenuto sarà simile all'output riportato qui di seguito:
Fatal error: Uncaught exception 'Exception' 
with message 'Errore!!!!!!!!' 
in c:\programmi\php\www\error.php:2 Stack trace: #0 {main} 
thrown in c:\programmi\php\www\error.php on line 2
Al lancio dello scriptino abbiamo due effetti: il primo è la notifica di un Uncaught exception (letteralmente: "eccezione non catturata"), il secondo, ben più importante ai fini dell'Exception Handling è il fatto che a seguito di questa notifica il resto delle istruzioni contenute nel codice, se presenti, non verranno eseguite.

In pratica, in questo caso l'effetto di un'azione di throwning sul codice PHP può essere paragonato a quello di una clausola die() che blocca l'esecuzione del listato a seguito di un controllo.

Certo l'argomento è abbastanza ostico, probabilmente anche per coloro che hanno maturato una certà capacità nella produzione del listato in un'ottica procedurale, ma come al solito il segreto è sempre lo stesso: documentarsi, sbagliare e riprovare...

Attenzione: questo articolo è stato concesso in esclusiva per la pubblicazione a Mrwebmaster.it; ne è vietata la riproduzione, anche parziale, senza l'esplicito consenso dell'autore e della redazione di Mrwebmaster.it.

© Claudiogarau.it :: Tutorials & Scripts, PHP, Linux and more.

Stampa :: Torna alla Home