Come applicare prova a catturare il blocco in PHP

Come applicare prova a catturare il blocco in PHP
La gestione delle eccezioni è una caratteristica molto importante di qualsiasi programmazione orientata agli oggetti. Quando arriva un errore logico o di sistema dopo aver eseguito qualsiasi codice, viene chiamata eccezione e la tecnica con cui il programmatore può gestire correttamente gli errori viene chiamata gestione delle eccezioni. Viene utilizzato per evitare risultati imprevisti dagli utenti finali, migliorare la sicurezza dell'applicazione e gestire errori predefiniti in modo efficiente. Questa funzione è supportata da PHP dalla versione 5. Tentativo E presa Il blocco viene utilizzato per gestire le eccezioni nella programmazione orientata agli oggetti. Tentativo Il blocco viene utilizzato per lanciare l'eccezione se si verifica un errore e presa O Finalmente Il blocco viene utilizzato per gestire l'eccezione in PHP. Questo tutorial ti aiuterà ad apprendere l'uso della gestione delle eccezioni della programmazione orientata agli oggetti utilizzando PHP.

Prova il blocco

PHP ha una classe di base chiamata Eccezione e le eccezioni vengono lanciate da Tentativo blocca a Eccezione o sottoclasse di Eccezione classe.

Sintassi:

Tentativo

// Codice principale

Blocco di cattura

Presa Il blocco appare dopo Tentativo bloccare. PHP supporta più presa blocchi per gestire più eccezioni. Quando qualsiasi eccezione lancia, PHP cerca di abbinarsi al primo blocco di cattura, quindi il secondo blocco di cattura se non corrisponde al primo e così via.

Sintassi:

Tentativo

// Codice principale

cattura (eccezione $ e)

// Codice di gestione degli errori

Finalmente il blocco

Finalmente il blocco può essere utilizzato dopo o invece di catturare il blocco in PHP e questo blocco viene eseguito quando prova il blocco esce. Qualsiasi codice normale o di terminazione può essere aggiunto a questo blocco dopo aver eseguito il codice di prova.

Sintassi:

Tentativo

// Codice principale

cattura (eccezione $ e)

// Codice di gestione degli errori

Finalmente

// Codice normale

Esempio-1: usando il blocco try-catch per un semplice errore

L'esempio seguente mostra l'uso di un blocco try-catch per una singola eccezione. Crea un file PHP con il seguente script. Il valore del parametro di query 'Num'è stato letto e controllato nel blocco di prova. Se il valore è inferiore a 10, il blocco di prova lancerà un'eccezione nel blocco catch. Altrimenti, il valore verrà stampato. Il blocco catch catturerà l'eccezione e stamperà il messaggio inviato dal blocco di prova. Se non passa il parametro di query, il valore predefinito sarà 100.

// testare il numero è 10 o più
Tentativo

if (ISSET ($ _ get ['num'])
// Leggi il valore dall'URL
$ n = $ _get ['num'];
altro
// Imposta il valore predefinito
$ n = 100;
Se ($ n <10)

// Se l'eccezione lancia, il blocco catch visualizzerà il seguente messaggio di errore
lancia una nuova eccezione ("

Il numero deve essere 10 o più.

");

altro

// esegue questa riga se non viene visualizzato alcun errore.
eco "

Il numero è $ n

";


// cattura l'eccezione da Try Block
cattura (eccezione $ e)

// Stampa il messaggio di errore passato dal blocco Try
echo $ e-> getMessage ();

?>

Produzione:

Esegui lo script senza alcun parametro di query.

http: // localhost/phpcode/trycatch1.PHP

Esegui lo script con un valore di parametro di query che è inferiore a 10.

http: // localhost/phpcode/trycatch1.PHP?Num = 5

Esegui lo script con un valore di parametro di query che è maggiore di 10.

http: // localhost/phpcode/trycatch1.PHP?Num = 15

Esempio-2: gestione di più errori ereditando la classe di eccezioni

Crea un file PHP con il seguente script per gestire le più eccezioni utilizzando più blocchi di cattura. Una sottoclasse di nome 'MyException'è stato creato estendendo la classe base'Eccezione'per gestire il' 'Errore URL non valido'. La classe base Eccezione è stato usato per la gestioneErrore URL vuoto'.

// dichiara una sottoclasse myException estendendo la classe di eccezione
class myException estende l'eccezione
// Imposta il messaggio di errore nel costruttore
funzione pubblica __Construct ($ message = null, $ code = 0)
$ this-> message = $ message;

// Visualizza il messaggio di errore
funzione pubblica display_error ()

eco '

'.$ this-> messaggio.'non è un indirizzo URL valido

';


Tentativo

// Imposta l'indirizzo URL utilizzando il parametro query o il valore predefinito
$ url = ISSET ($ _ get ['url'])?$ _Get ['url']: "https: // linuxhint.com ";
// Controllare l'indirizzo URL è vuoto o no
if ($ url == "")
// Se l'indirizzo URL è vuoto, il seguente messaggio di errore verrà lanciato
lancia una nuova eccezione ("

L'indirizzo URL è vuoto.

");

// Controllare gli indirizzi URL è valido o non valido
altrof (!filter_var ($ url, filter_validate_url))
// Se l'indirizzo URL non è valido, un'eccezione lancerà con indirizzo URL non valido
lancia nuovo myException ($ URL);

altro

// Stampa messaggio per indirizzo URL valido
eco "

".$ URL."È un indirizzo URL valido

";


// gestire l'eccezione URL non valida
catch (myException $ e)
// Chiama il metodo della sottoclasse per stampare il messaggio di errore
echo $ e-> display_error ();

// gestisce l'eccezione dell'URL vuota
cattura (eccezione $ e)

// Stampa Messaggio di errore per indirizzo URL vuoto
echo $ e-> getMessage ();

?>

Produzione:

Esegui lo script senza alcun parametro di query.

http: // localhost/phpcode/trycatch2.PHP

Esegui lo script con un parametro di query denominato URL senza alcun valore.

http: // localhost/phpcode/trycatch2.PHP?url =

Esegui lo script con un parametro di query denominato URL con un valore URL non valido.

http: // localhost/phpcode/trycatch2.PHP?url = Google

Esegui lo script con un parametro di query denominato URL con un valore URL valido.

http: // localhost/phpcode/trycatch2.PHP?url = http: // google.com
Immagine

Esempio-3: Gestione dell'errore del file utilizzando Try, Catch e infine bloccare

Crea un file PHP con il seguente script per conoscere l'uso di Try, Catch e infine Blocca. Lo script proverà ad aprire il test del file.txt 'e try block lanceranno un'eccezione se il file non esiste nella posizione corrente o non è in grado di aprire. Il blocco catch stamperà il messaggio di errore lanciato dal blocco di prova. Il codice del blocco finalmente chiuderà il gestore dei file dopo aver eseguito il blocco di prova. Try Block stamperà il contenuto del file se non viene visualizzato alcun errore.

error_reporting (0);
Tentativo

// prova ad aprire un file per la lettura
$ file_handler = fopen ("test.txt "," r ");
Se(!$ file_handler)

// lancia l'eccezione se il file non è in grado di aprire
lancia una nuova eccezione ("

Impossibile aprire il file.

");

altro

// stampano il centro del file
Mentre(!feof ($ file_handler))

echo fgets ($ file_handler) . "
";

fclose ($ file_handler);


catch (eccezione $ e)
// Stampa il messaggio di errore per l'apertura dell'eccezione di errore del file
echo $ e-> getMessage ();

Finalmente

// Stampa Messaggio di terminazione
Echo "il programma terminato.";

?>

Produzione:

Esegui lo script.

http: // localhost/phpcode/trycatch3.PHP

Esempio-4: usando il blocco di cattura di prova nidificato

Crea un file PHP con il seguente script per conoscere il modo di utilizzare il blocco di battiti nidificati. Lo script controllerà che il valore prelevato da un URL è un numero o meno nel primo blocco try-catch e il numero preso è maggiore di 100 o no verrà controllato nel secondo blocco di cattura di prova.

if (ISSET ($ _ get ['n']))

// Il primo blocco di prova
Tentativo
$ numera = $ _get ['n'];
if (is_numeric ($ numero))

// Il secondo blocco di prova
Tentativo
if ($ numero> = 100)
// Stampa il messaggio di successo
echo "Il numero è valido.";

altro
lancia una nuova eccezione ('Il numero non è valido.');


catch (eccezione $ e)
// Stampa il secondo errore
echo $ e-> getMessage ();


altro

lancia una nuova eccezione ('Il valore non è un numero.');


catch (eccezione $ e)
// Stampa l'errore Firt
echo $ e-> getMessage () . "
";


altro
echo "Nessun numero ha dato.";
?>

Produzione:

Esegui lo script senza alcun parametro di query.

http: // localhost/phpcode/trycatch4.PHP

Esegui lo script con il valore del parametro query inferiore a 100.

http: // localhost/phpcode/trycatch4.PHP?n = 78

Esegui lo script con il valore del parametro query maggiore di 100.

http: // localhost/phpcode/trycatch4.PHP?n = 112

Esempio-5: utilizzando il blocco try-catch con la funzione

Crea un file PHP con il seguente script per conoscere l'uso del blocco try-catch con la funzione. Lo script prenderà due valori numerici dai parametri di query URL e il blocco Try-Catch chiamerà una funzione che lancerà un'eccezione se il "Divisione per zero"Si è verificato un errore.

// Definisci la funzione per il calcolo della divisione
Divisione funzioni ($ a, $ b)
$ risultato = $ a/$ b;
Se(!$ risultato)
// lancia un'eccezione per il risultato non valido
lancia una nuova eccezione ('divisione di zero.');
altro
eco "

Il risultato di $ a/$ b = $ risultato

";

if (ISSET ($ _ GET ['N1']) && ISSET ($ _ GET ['N2']))

Tentativo
$ numero1 = $ _get ['n1'];
$ numera2 = $ _get ['n2'];
// funzione di chiamata che controllerà l'errore
Divisione ($ NUMBER1, $ NUMBER2);

catch (DivisionByZeroerror $ e)
// Stampa il messaggio di errore
eco '

Errore: ", $ e-> getMessage (),"

";


altro
echo "non sono stati forniti uno o più numeri.";
?>

Produzione:

Esegui lo script senza alcun parametro di query.

http: // localhost/phpcode/trycatch5.PHP

Esegui lo script con i valori dei parametri query, 10 e 5.

http: // localhost/phpcode/trycatch5.PHP?N1 = 10 e N2 = 5

Esegui lo script con i valori dei parametri query, 10 e 0.

http: // localhost/phpcode/trycatch5.PHP?N1 = 10 e N2 = 0

Esempio-6: visualizzare il messaggio di errore in dettaglio per l'eccezione personalizzata

Crea un file PHP con il seguente script per visualizzare il messaggio di errore in dettaglio utilizzando diversi metodi della classe di eccezione. Lo script prenderà il nome file dal parametro URL e controlla che il file esiste o meno utilizzando un blocco try-catch.

if (isset ($ _ get ['fn'])

Tentativo
$ fileName = $ _get ['fn'];
Se(!file_exists ($ nome file))

lancia una nuova eccezione ('file non esiste.');


catch (eccezione $ e)
// Visualizza il messaggio di errore in dettaglio
eco '
Nome del file: '.$ e-> getFile ().
'
Errore si è verificato sul numero di riga: ".$ e-> getline ().
'
Messaggio di errore: '.$ e-> getMessage ();

Finalmente
eco "
Controlla un altro file.";


altro
echo "Il nome file non ha dato.";
?>

Produzione:

Esegui lo script senza alcun parametro di query.

http: // localhost/phpcode/trycatch6.PHP

Esegui lo script con il parametro query che contiene il nome file non esistente.

http: // localhost/phpcode/trycatch6.PHP?fn = testo.TXT

Esegui lo script con il parametro query che contiene il nome file esistente.

http: // localhost/phpcode/trycatch6.PHP?fn = trycatch5.PHP

Conclusione

Gli usi di base del blocco try-catch sono stati spiegati in questo tutorial utilizzando script PHP molto semplici. Spero che il concetto di gestione delle eccezioni in PHP venga cancellato dopo aver praticato correttamente gli esempi di questo tutorial.