Advertisement
  1. Code
  2. Laravel 5
Code

Cosa Sono Le Eccezioni in Laravel?

Difficulty:IntermediateLength:ShortLanguages:

Italian (Italiano) translation by Luca Menozzi (you can also view the original English article)

Come sviluppatore PHP, potresti usare le eccezioni, perché consentono di inviare notifiche quando qualcosa va storto o quando l'utente fa qualcosa di inaspettato (come dividere per zero). Senza eccezioni, la tua applicazione terminerebbe mostrando errori indesiderati e renderebbe il debug ancora più complicato. E' anche importante che tu sospenda immediatamente l'esecuzione e che vengano eseguite altre azioni.

Le eccezioni sono davvero semplici e facilitano l'avanzamento dello sviluppo. Una volta che impari ad usare le eccezioni, diverranno parte integrante del tuo processo di sviluppo.

Cos'è un'Eccezione?

Penso che la migliore definizione di eccezione sia stata data da Martin Fowler:

Le eccezioni segnalano qualcosa al di fuori degli attesi limiti di comportamento del codice in questione.

In effetti, un'eccezione è, in tutto e per tutto, un evento, che si verifica durante l'esecuzione di un programma e che interrompe il normale flusso di istruzioni del programma. Quando lanci, throw, un'eccezione (creando un oggetto exception e passandolo al sistema di runtime), il sistema lo cattura, catch, cercando l'apposito handler e ritornando il messaggio corretto.

Quando Abbiamo Bisogno di Usare le Eccezioni?

Usa le eccezioni quando il tuo sistema deve affrontare situazioni anomale che gli impediscono di farsene carico. Usiamo le eccezioni solo quando il sistema non riesce a determinare cosa sia successo. Martin Fowler ritiene che "se un fallimento è un comportamento atteso, allora non dovresti usare le eccezioni". Questo significa che dovresti usare le eccezioni quando non riesci a determinare l'errore. Le Exception dovrebbero essere usate solo in circostanze eccezionali.

Nota: le Exceptions non vanno bene per gestire le operazioni logiche.

Per un sistema di validazione dell'input, usare le eccezioni è sbagliato. Prima di tutto, il testo di input sarà definito, e in un'applicazione come questa dobbiamo segnalare un insieme di errori invece di un errore singolo. Penso che sia opportuno eliminare l'uso delle eccezioni in qualsiasi circostanza in cui ci aspettiamo fallimenti di validazione.

Fare il catch di un'eccezione è molto importante perché se non lo fai, il sistema ritornerà un errore. L'operazione di catching dovrebbe stare il più vicino possibile al punto dell'errore.

Cosa Sono le Eccezioni in Laravel?

Laravel usa un exception Handler, una classe in App\Exceptions\Handler.php. Essa contiene due metodi principali (il metodo renderHttpException, usato per tutte le eccezioni HTTP come la 404 e la 503, si trova nella classe padre Handler). Il primo è report, usato per fare il log delle eccezioni o per inviarle ad un servizio esterno. Ecco un esempio del metodo report:

Il secondo è render. Questo metodo è responsabile della conversione di una data eccezione in una risposta HTTP che deve essere rimandata al browser. Questo è un esempio del metodo render:

Nota: puoi usare la proprietà $dontReport dell'exception handler per ignorare le eccezioni a seconda del tipo.

Puoi sovrascrivere i metodi delle eccezioni di Laravel nella tua eccezione personalizzata in questo modo:

Questo viene visualizzato quando il parametro debug nella configurazione è impostato a true.

Come Creare un'Eccezione Laravel Personalizzata

Potresti avere la necessità di creare un'eccezione personalizzata. Devi estendere la classe base Exception di Laravel—Io ho creato una classe abstract che si comporta come classe base della classe Exception personalizzata. Crea un file in App/Exceptions/monException.php.

E la tua classe Exception:

Nel tuo codice, puoi usare la classe qui sopra:

Oltre alla classe core Exception di Laravel, puoi usare il package Assertion. Puoi usarlo come classe di terze parti per le eccezioni; utile anche per evitare gli "spaghetti if blocks" nel tuo codice.

Per installare il package Assertion, devi lanciare il seguente comando:

Per esempio, se vuoi controllare l'indirizzo email di un utente, puoi fare così:

Conclusioni

Indipendentemente dal linguaggio che scegli di usare, è molto importante comprendere le eccezioni perché aiutano a controllare l'esecuzione del flusso di un'applicazione. 

Tra le altre cose, ci aiutano anche a registrare i problemi quando accadono e aiutano a rendere la tua applicazione più robusta.

Come puoi vedere da quanto scritto in questo tutorial, Laravel è un framework che offre un'ottima funzionalità per gestire le eccezioni nello sviluppo delle web applications.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.