Gestire le eccezioni in PHP – Seconda Parte
| Posted in Php | Posted on 08-03-2010
0
Dopo aver, nella prima parte, presentato giusto una introduzione su come gestire le eccezioni in php (blocco try-catch), proviamo a scendere più in dettaglio in questa seconda parte.
Come sempre, facciamo parlare un esempio :
<? try { $var = -5; $var2 = -3; if ( $var < $var2 ) { throw new Exception($var. " è inferiore a " .$var2. "<br />"); echo "Stampa qui!!"; } } catch (Exception $excp) { echo "Attenzione!! Trovata eccezione:<br />", $excp; } ?>
che, se lanciato, produrrà a video il seguente output :
Attenzione!! Trovata eccezione: exception 'Exception' with message '-5 è inferiore a -3 ' in c:\programmi\php\www\err.php:7 Stack trace: #0 {main}Si tratta di uemplice script che racchiude delle istruzioni in un blocco try. Il fatto di aver lanciato all'interno del blocco un'eccezione tramite throw, ha determinato l'impossibilità di eseguire le istruzioni seguenti che troviamo nello stesso blocco try. Ecco perchè la stampa ‘Stampa qui!!’ non compare nell’output.
Poichè abbiamo istanziato l’oggetto che appartiene alla classe Exception, tale istanza è riutilizzabile e, infatti, lo ritroviamo al di fuori del blocco di try dove diviene argomento di un'istruzione e non ne blocca l'esecuzione.Ma la gestione delle eccezioni si basa su una serie di variabili e metodi più importanti da utilizzare nella gestione delle eccezioni. Partiamo con le variabili :
- message: non è altro che il messaggio di errore da passare come argomento al costruttore della classe.
- line: linea esatta del blocco di codice in cui viene generato l'errore.
- file: nome del file PHP in cui si origina l'errore gestito tramite eccezione.
Attenzione perchè queste tre variabili sono "protette" (non potranno essere riscritte nè modificate).
Veniamo ora ai metodi :
- getMessage(): lo abbiamo descritto nella prima parte : prende come parametro la notifica di errore che viene generata dal controllo delle eccezioni e lo invia, come parametro, al costruttore della classe di riferimento.
- getLine(): metodo che permette il rinvio alla riga di codice in cui si verifica l'errore.
- getTrace(): metodo che rinvia ad una tabella con le caratteristiche dell'errore.
- getTraceAsString(): metodo che svolge una funzione similare al precedente creando una stringa con lo stesso contenuto di informazioni.
Infine va ricordato che il metodo getTrace() presenta 6 differenti elementi costitutivi :
- file: documento in cui si verifica l'errore.
- line: riga di codice in cui si verifica l'errore.
- function: funzione coinvolta nell'errore.
- class: classe coinvolta nell'errore.
- type: modo in cui viene richiamato il metodo che potrebbe essere statico o dinamico.
- args: argomenti passati al metodo raccolti in una tabella associativa.
Nella terza ed ultima parte vedremo, dopo aver digerito variabili, metodi e altro, come realizzare una classe vera e propria per gestire le eccezioni.















