I thought I knew all about PHP until I found this website! "Pensavo di sapere tutto di PHP fino a quando ho trovato questo sito!"
Jen

Try ... catch

I blocchi try di cattura permettono di gestire le eccezioni in modo controllato. Tuttavia, mentre questi blocchi prenderà un errore, è a voi per affrontare in modo corretto. E 'molto meglio per fermare un errore che si verifica piuttosto che dopo la cattura si è verificata La prima ragione di questo è che rende il codice più affidabile difensiva programmazione. La seconda ragione è che ci vuole più tempo per il codice per recuperare da un eccezione, anche quando si trova in un blocco try ... catch. Il try catch prenderà e affrontare eventuali errori all'interno del blocco try.
person = null ; $ Persona = null;
prova
{
$ person - > name ; echo $ persona -> nome;
}
Exception $ ex ) catch (Exception $ ex)
{
" An error occured : " . $ ex - > getMessage ( ) ; echo "Errore:". $ ex -> getMessage ();
}
Quindi, al di sopra eccezione null viene catturato dalla variabile $ a persona. Si può generare un'eccezione con la creazione di un nuovo oggetto eccezione, in questo modo ...
person = null ; $ Persona = null;
.
.
.
$ person ) if (! $ persona)
{
Exception ( " The person object can ' t be null . " ) ; throw new Exception ("L'oggetto persona può 't essere nullo.");
}
È inoltre possibile definire i propri tipi di eccezione, ad esempio un tipo per il vostro codice database. Quindi, qualcosa di simile.
DatabaseException extends Exception class DatabaseException estende Exception
{
Make the message parameter required , and hide the code parameter / / Fai il parametro messaggio richiesto, e nascondere il parametro codice
__construct ( $ message ) { public function __ construct ($ message) {
__construct ( $ message , 0 ) ; parent :: costrutto __ ($ message, 0);
}

To change the string output override this / / Per modificare la stringa di uscita ignorare questa
__toString ( ) { pubblico __ toString function () {
" An error occured in your database , the error is : { $ this - > message } n " ; ritorno verificato un errore nel database, l'errore è: {$ this - message>} n";
}
}
Eseguendo l'override la funzione __ toString permette il testo che è uscita allo schermo da modificare. Questo può quindi essere chiamato nel seguente modo ...
DatabaseException ( " Invalid SQL query . " ) ; throw new DatabaseException ("Invalid query SQL.");
Quando si cattura gli errori più di un blocco catch può essere presente per un blocco try, in modo che le eccezioni diverse possono essere gestiti in diversi modi.
prova
{
/ *
Code to catch * Codice per la cattura
* /
}
DatabaseException $ e ) catch (e DatabaseException $)
{
" An error occured : " . $ e - > getMessage ( ) ; echo "Errore:" $ e -> getMessage ();.
}
Exception $ e ) catch (Exception $ e)
{
/ *
Log general exception * Entra eccezione generale
* /
}
Come si può vedere da sopra le eccezioni generali sono registrati e le eccezioni di database vengono visualizzati sullo schermo. Se una eccezione non e 'colto in un errore fatale sarà generata da PHP. Potete prendere eccezioni non rilevate in PHP utilizzando la funzione set_exception_handler.
HandleException ( $ exception ) Funzione HandleException ($ eccezione)
{
' header . php ' ) ; include ('header php.');
' errorPage . php ' ) ; include ('ErrorPage php.');
" An error occured when trying to carry out your request . nnThe error is : " , $ exception - > getMessage ( ) , " n " ; echo verificato un errore durante il tentativo di effettuare la vostra richiesta nnThe errore è:"., fatta eccezione per $ -> getMessage (), "n";
' footer . php ' ) ; include ('piè di pagina php.');
}

' HandleException ' ) ; set_exception_handler ('HandleException');
Quindi come si può vedere sopra la funzione set_exception_handler viene passato alla funzione HandleException come un parametro che chiamerà in caso di errore si verifica. In questo caso la funzione HandleException chiama i modelli necessari per mostrare un errore piacevole catturato pagina all'utente. Si consiglia di implementare un gestore di eccezioni nel codice di base del tuo sito per garantire che l'utente non viene mai mostrato alcun messaggio di errore brutte.

Nessun commento è stato fornito.
security image
Scritto da Dominic Skinner
Ultimo aggiornamento: 2011/10/25 16:00:38