PHP Try Catch Esempio: eccezione & Tutorial sulla gestione degli errori

Sommario:

Anonim

Cos'è un'eccezione?

Un errore è un risultato imprevisto del programma che non può essere gestito dal programma stesso.

Gli errori vengono risolti riparando il programma. Un esempio di errore sarebbe un ciclo infinito che non smette mai di essere eseguito.

Un'eccezione è il risultato imprevisto del programma che può essere gestito dal programma stesso.

Esempi di eccezione includono il tentativo di aprire un file che non esiste.

Questa eccezione può essere gestita creando il file o presentando all'utente un'opzione di ricerca del file.

In questo tutorial imparerai-

  • Perché gestire l'eccezione?
  • Gestione degli errori PHP
  • Esempi di gestione degli errori
  • Differenza tra errori ed eccezioni
  • Eccezioni multiple
  • Testare il codice

Perché gestire l'eccezione?

  • Evita risultati imprevisti sulle nostre pagine che possono essere molto fastidiosi o irritanti per i nostri utenti finali
  • Migliorare la sicurezza delle nostre applicazioni evitando di esporre le informazioni che utenti malintenzionati potrebbero utilizzare per attaccare le nostre applicazioni
  • Le eccezioni Php vengono utilizzate per modificare il normale flusso di un programma se si verifica un errore prevedibile.

Gestione degli errori PHP

Quando si verifica un errore, a seconda delle impostazioni di configurazione, PHP visualizza il messaggio di errore nel browser web con le informazioni relative all'errore che si è verificato.

PHP offre diversi modi per gestire gli errori.

Vedremo tre (3) metodi comunemente usati;

  1. Istruzioni Die : la funzione die combina le funzioni echo e exit in una sola. È molto utile quando vogliamo emettere un messaggio e interrompere l'esecuzione dello script quando si verifica un errore.
  2. Gestori di errori personalizzati : si tratta di funzioni definite dall'utente che vengono chiamate ogni volta che si verifica un errore.
  3. Segnalazione errori PHP : il messaggio di errore dipende dalle impostazioni di segnalazione errori PHP. Questo metodo è molto utile nell'ambiente di sviluppo quando non hai idea di cosa abbia causato l'errore. Le informazioni visualizzate possono aiutarti a eseguire il debug dell'applicazione.

Esempi di gestione degli errori

Vediamo ora alcuni semplici esempi con routine di gestione degli errori.

Supponiamo di aver sviluppato un'applicazione che utilizza file di testo per memorizzare i dati. Potremmo voler verificare l'esistenza del file prima di tentare di leggere i dati da esso.

Il codice seguente implementa l'esempio precedente.

Supponendo che tu abbia salvato il file simple_error.php nella cartella phptuts, apri l'URL http: //localhost/phptuts/simple_error.php

Otterrai i seguenti risultati

Come puoi vedere dai risultati sopra, rende la nostra applicazione poco professionale e può essere fastidiosa per l'utente.

Modificheremo il codice precedente e scriveremo un gestore degli errori per l'applicazione

Supponendo che tu abbia salvato il codice sopra come error_handling.php, apri l'URL http: //localhost/phptuts/error_handling.php

Nota: è una buona pratica di sicurezza visualizzare un messaggio come quello mostrato sopra invece di mostrare il messaggio come "File non trovato".

Diamo un'occhiata a un altro esempio che utilizza un gestore di errori personalizzato.

Il gestore degli errori personalizzato verrà impostato come funzione di gestione degli errori PHP predefinita e in pratica visualizzerà un numero e un messaggio di errore.

Il codice seguente illustra l'implementazione dell'esempio precedente

Apri l'URL http: //localhost/phptuts/custom_error_handler.php otterrai i seguenti risultati

.

Come puoi vedere dall'esempio sopra, i gestori di errori personalizzati sono potenti nel senso che

  • Ci consentono di personalizzare i messaggi di errore.
  • Il gestore degli errori personalizzato può anche includere la registrazione degli errori in un file / database, l'invio di e-mail allo sviluppatore, ecc.

Diamo ora un'occhiata al terzo tipo di gestione degli errori. Useremo la funzione PHP incorporata error_reporting. Ha la seguente sintassi di base

QUI,

  • "Error_reporting" è la funzione di segnalazione degli errori PHP
  • "$ Reporting_level" è facoltativo, può essere utilizzato per impostare il livello di reporting.Se non è stato specificato alcun livello di reporting, PHP utilizzerà il livello di reporting di errore predefinito come specificato nel file php.ini.
Livello di reporting Descrizione Esempio
E_WARNING Visualizza solo i messaggi di avviso. Non interrompe l'esecuzione dello script error_reporting (E_WARNING);
E_NOTICE Visualizza avvisi che possono verificarsi durante la normale esecuzione di un programma o che potrebbero essere un errore. error_reporting (E_ NOTICE);
E_USER_ERROR Visualizza gli errori generati dall'utente, ad esempio il gestore degli errori personalizzato error_reporting (E_ USER_ERROR);
E_USER_WARNING Visualizza i messaggi di avviso generati dall'utente error_reporting (E_USER_WARNING);
E_USER_NOTICE Visualizza gli avvisi generati dagli utenti error_reporting (E_USER_NOTICE);
E_RECOVERABLE_ERROR Visualizza gli errori che non sono irreversibili e possono essere gestiti utilizzando gestori di errori personalizzati error_reporting (E_RECOVERABLE_ERROR);
E_ALL Visualizza tutti gli errori e gli avvisi error_reporting (E_ ALL);

Differenza tra errori ed eccezioni

  • Le eccezioni vengono generate e destinate ad essere rilevate mentre gli errori sono generalmente irrecuperabili.
  • Le eccezioni vengono gestite in modo orientato agli oggetti.

    Ciò significa che quando viene generata un'eccezione; viene creato un oggetto eccezione che contiene i dettagli dell'eccezione.

La tabella seguente mostra i metodi dell'oggetto eccezione

Metodo Descrizione Esempio
getMessage () Visualizza il messaggio dell'eccezione
getMessage();?>
ottenere il codice() Visualizza il codice numerico che rappresenta l'eccezione
getCode();?>
prendi il file() Visualizza il nome del file e il percorso in cui si è verificata l'eccezione
getFile();?>
getLine () Visualizza il numero di riga in cui si è verificata l'eccezione
getLine();?>
getTrace () Visualizza un array del backtrace prima dell'eccezione
getTrace());?>
getPrevious () Visualizza l'eccezione precedente prima di quella attuale
getPrevious();?>
getTraceAsString () Visualizza il backtrace dell'eccezione come stringa anziché come matrice
getTraceAsString();?>
__accordare() Visualizza l'intera eccezione come stringa
__toString();?>

Di seguito è riportata la sintassi di base per generare un'eccezione.

QUI,

  • "Throw" è la parola chiave utilizzata per generare l'eccezione
  • "Nuova eccezione (...)" crea un oggetto eccezione e passa la stringa "Questo è un esempio di eccezione" come parametro del messaggio.

Il codice precedente restituisce il messaggio seguente.

Vedremo ora un esempio che implementa le eccezioni di lancio e cattura.

Modificheremo l'esempio sopra e includeremo la prova, il lancio e la ripresa.

Ha la seguente sintassi di base.

QUI,

  • "Try {...}" è il blocco di codice da eseguire che potrebbe potenzialmente sollevare un'eccezione
  • "Catch (Exception $ e) {…}" è il blocco di codice che cattura l'eccezione generata e assegna l'oggetto eccezione alla variabile $ e.

Il codice seguente mostra l'esempio di eccezione di base con l'eccezione try, throw e catch implementata.

Il programma lancia deliberatamente un'eccezione che poi intercetta.

getMessage();echo "";echo "getCode(): " . $e->getCode();echo "";echo "__toString(): " . $e->__toString();}?>

Apri l'URL http: //localhost/phptuts/exception_handling.php Otterrai i seguenti risultati.

È anche possibile creare più eccezioni per un'istruzione try php a seconda del tipo di eccezione generata.

Vedi l'articolo su MySQL, accesso ai dati PHP

... per esempi di implementazione di più eccezioni

Eccezioni multiple

L'eccezione multipla usa più blocchi try catch per gestire le eccezioni generate. Le eccezioni multiple sono utili quando;

  • Si desidera visualizzare un messaggio personalizzato a seconda dell'eccezione generata
  • Si desidera eseguire un'operazione univoca a seconda dell'eccezione generata

Il diagramma di flusso seguente illustra il funzionamento di più eccezioni

Diamo un'occhiata a un esempio che utilizza più eccezioni.

Modificheremo il codice che divide un numero per il denominatore passato.

Ci aspettiamo che si verifichino due tipi di eccezioni;

  • Divisione per zero
  • Divisione per un numero negativo

Per semplicità, mostreremo solo il tipo di eccezione nei nostri blocchi catch.

La classe Exception incorporata in PHP viene utilizzata per generare eccezioni.

Creeremo due classi che estendono la classe di eccezione e le useremo per generare eccezioni.

Il codice seguente mostra l'implementazione.

Testare il codice

Daremo per scontato che tu abbia salvato multiple_exceptions.php nella cartella phptuts.

Accedi all'URL http: //localhost/phptuts/multiple_exceptions.php

Tornare al file PHP e passare -1 come parametro come mostrato nel diagramma seguente.

Accedi all'URL http: //localhost/phptuts/multiple_exceptions.php .

Quali risultati ottieni? Passa 3 come parametro.

Quali risultati ottieni?

Sommario

  • Gli errori sono risultati imprevisti prodotti dal codice PHP
  • La gestione degli errori migliora le prestazioni dell'applicazione
  • PHP ha funzioni integrate che possono essere utilizzate per personalizzare il modo in cui PHP segnala gli errori
  • Le eccezioni sono come gli errori, ma possono essere rilevate utilizzando il blocco catch quando vengono lanciate.
  • La visualizzazione di messaggi di errore che mostrano informazioni sull'errore è considerata una cattiva pratica di sicurezza.