Cos'è l'eccezione in Java?
L'eccezione in Java è un evento che interrompe l'esecuzione delle istruzioni del programma e disturba il normale flusso di esecuzione del programma. È un oggetto che racchiude le informazioni su un evento di errore che si è verificato all'interno di un metodo e viene passato al sistema di runtime. In Java, le eccezioni vengono utilizzate principalmente per indicare diversi tipi di condizioni di errore.
In questo tutorial imparerai-
- Cos'è l'eccezione?
- Perché abbiamo bisogno dell'eccezione?
- Come gestire l'eccezione
- Prova Catch Block
- Gerarchia di classi di eccezioni Java
- Java finalmente blocca
Esistono due tipi di errori:
- Compilare gli errori di tempo
- Errori di runtime
Gli errori in fase di compilazione possono essere nuovamente classificati in due tipi:
- Errori di sintassi
- Errori semantici
Esempio di errori di sintassi:
Invece di dichiarare
int a;
l'hai dichiarato erroneamente come in a;
per quale compilatore lancerà un errore.
Esempio: hai dichiarato una variabile
int a;
e dopo alcune righe di codice dichiari di nuovo un intero come int a;
. Tutti questi errori vengono evidenziati durante la compilazione del codice.
Esempio di errori di runtime
Un errore di runtime è chiamato errore di eccezioni . È qualsiasi evento che interrompe il normale flusso di esecuzione del programma.
Esempi di eccezioni sono, eccezione aritmetica, eccezione Nullpointer, Dividi per zero eccezione, ecc.
Le eccezioni in Java sono qualcosa che è fuori dal controllo degli sviluppatori.
Fare clic qui se il video non è accessibile
Perché abbiamo bisogno dell'eccezione?
Supponiamo di aver codificato un programma per accedere al server. Le cose hanno funzionato bene durante lo sviluppo del codice.
Durante l'esecuzione effettiva della produzione, il server è inattivo. Quando il programma tenta di accedervi, viene sollevata un'eccezione.
Come gestire l'eccezione
Finora abbiamo visto, l'eccezione è al di fuori del controllo dello sviluppatore. Ma incolpare il tuo errore di codice su questioni ambientali non è una soluzione. Hai bisogno di una programmazione robusta, che si occupi di situazioni eccezionali. Tale codice è noto come gestore delle eccezioni.
Nel nostro esempio, una buona gestione delle eccezioni sarebbe, quando il server è inattivo, connettersi al server di backup.
Per implementarlo, inserisci il tuo codice per connetterti al server (utilizzando le tradizionali condizioni if e else).
Controllerai se il server è inattivo. In caso affermativo, scrivere il codice per connettersi al server di backup.
Tale organizzazione del codice, utilizzando il ciclo "if" e "else", non è efficace quando il codice ha più eccezioni java da gestire.
class connect{if(Server Up){// code to connect to server}else{// code to connect to BACKUP server}}
Prova Catch Block
Java fornisce una gestione eccezionale incorporata.
- Il codice normale va in un blocco TRY .
- Il codice di gestione delle eccezioni entra nel blocco CATCH
Nel nostro esempio, il blocco TRY conterrà il codice per connettersi al server. Il blocco CATCH conterrà il codice per connettersi al server di backup.
Nel caso in cui il server sia attivo, il codice nel blocco CATCH verrà ignorato. Nel caso in cui il server sia inattivo, viene sollevata un'eccezione e il codice nel blocco catch verrà eseguito.
Quindi, questo è il modo in cui viene gestita l'eccezione in Java.
Sintassi per l'utilizzo di try & catch
try{statement(s)}catch (exceptiontype name){statement(s)}
Esempio
Passaggio 1) Copia il seguente codice in un editor
class JavaException {public static void main(String args[]){int d = 0;int n = 20;int fraction = n/d;System.out.println("End Of Main");}}
Passaggio 2) Salva il file e compila il codice. Esegui il programma utilizzando il comando, java JavaException
Passaggio 3) Un'eccezione aritmetica: la divisione per zero viene mostrata come di seguito per la riga # 5 e la riga # 6 non viene mai eseguita
Passaggio 4) Ora vediamo come esaminare come try and catch ci aiuterà a gestire questa eccezione. Metteremo l'eccezione che causa la riga di codice in un blocco try , seguito da un blocco catch . Copia il seguente codice nell'editor.
class JavaException {public static void main(String args[]) {int d = 0;int n = 20;try {int fraction = n / d;System.out.println("This line will not be Executed");} catch (ArithmeticException e) {System.out.println("In the catch Block due to Exception = " + e);}System.out.println("End Of Main");}}
Passaggio 5) Salva, compila ed esegui il codice. Otterrai il seguente output
Come si osserva, viene gestita l'eccezione e viene eseguita anche l'ultima riga di codice. Inoltre, nota che la riga # 7 non verrà eseguita perché non appena viene sollevata un'eccezione il flusso di controllo salta al blocco catch.
Nota: l'oggetto AritmeticException "e" contiene informazioni sull'eccezione che si è verificata che possono essere utili per eseguire azioni di ripristino.
Gerarchia di classi di eccezioni Java
Dopo che un'istruzione catch viene eseguita, le altre vengono ignorate e l'esecuzione continua dopo il blocco try / catch. I blocchi catch annidati seguono la gerarchia delle eccezioni.- Tutte le classi di eccezione in Java estendono la classe "Throwable". Throwable ha due sottoclassi, Error ed Exception
- La classe Error definisce l'eccezione oi problemi che non dovrebbero verificarsi in circostanze normali dal nostro programma, ad esempio Errore di memoria, Errore hardware, Errore JVM, ecc.
- La classe Exception rappresenta le eccezioni che possono essere gestite dal nostro programma e il nostro programma può essere ripristinato da questa eccezione utilizzando il blocco try and catch
- Un'eccezione Runtime è una sottoclasse della classe dell'eccezione. L'eccezione di questo tipo rappresenta l'eccezione che si verifica in fase di esecuzione e che non può essere monitorata in fase di compilazione. Un eccellente esempio dello stesso è dividere per zero eccezione, o eccezione del puntatore nullo, ecc
- L'eccezione IO viene generata durante le operazioni di input e output
- Eccezioni interrotte in Java, vengono generate durante il threading multiplo.
Passaggio 1) Copia il codice seguente in un editor.
class JavaException {public static void main(String args[]) {try {int d = 1;int n = 20;int fraction = n / d;int g[] = {1};g[20] = 100;}/*catch(Exception e){System.out.println("In the catch block due to Exception = "+e);}*/catch (ArithmeticException e) {System.out.println("In the catch block due to Exception = " + e);} catch (ArrayIndexOutOfBoundsException e) {System.out.println("In the catch block due to Exception = " + e);}System.out.println("End Of Main");}}
Passaggio 2) Salva il file e compila il codice. Esegui il programma utilizzando il comando, java JavaException .
Passaggio 3) Viene generata un'eccezione ArrayIndexOutOfBoundsException. Modificare il valore di int d su 0. Salva, compila ed esegui il codice.
Passaggio 4 ) È necessario generare un'eccezione ArithmeticException.
Passaggio 5) Rimuovere il commento dalla riga # 10 alla riga # 12. Salva, compila ed esegui il codice.
Passaggio 6) Errore di compilazione? Questo perché Exception è la classe base di ArithmeticException Exception. Qualsiasi eccezione sollevata da ArithmeticException può essere gestita anche dalla classe Exception, quindi il blocco catch di ArithmeticException non avrà mai la possibilità di essere eseguito, il che lo rende ridondante. Da qui l'errore di compilazione.
Java finalmente blocca
Il blocco finalmente viene eseguito indipendentemente da un'eccezione sollevata nel blocco try. È facoltativo da utilizzare con un blocco try.
try {statement(s)} catch (ExceptiontType name) {statement(s)} finally {statement(s)}
Nel caso in cui venga sollevata un'eccezione nel blocco try, infine il blocco viene eseguito dopo l'esecuzione del blocco catch.
Esempio
Passaggio 1) Copia il codice seguente in un editor.
class JavaException {public static void main(String args[]){try{int d = 0;int n =20;int fraction = n/d;}catch(ArithmeticException e){System.out.println("In the catch block due to Exception = "+e);}finally{System.out.println("Inside the finally block");}}}
Passaggio 2) Salva, compila ed esegui il codice.
Passaggio 3) Uscita prevista. Infine il blocco viene eseguito anche se viene sollevata un'eccezione.
Passaggio 4) Modificare il valore della variabile d = 1. Salvare, compilare ed eseguire il codice e osservare l'output.
Riepilogo :
- Un'eccezione è un errore di runtime che interrompe il normale flusso di esecuzione del programma. L'interruzione durante l'esecuzione del programma viene definita errore o eccezione.
- Gli errori sono classificati in due categorie
- Errori in fase di compilazione: errori di sintassi, errori semantici
- Errori di runtime - Eccezione
- Un programma robusto dovrebbe gestire tutte le eccezioni e continuare con il suo normale flusso di esecuzione del programma. Java fornisce un metodo di gestione eccezionale integrato
- Il gestore delle eccezioni è un insieme di codice che gestisce un'eccezione . Le eccezioni possono essere gestite in Java utilizzando try & catch.
- Prova blocco : il codice normale va su questo blocco.
- Blocco di cattura : se c'è un errore nel codice normale, andrà in questo blocco