Che cos’è un’eccezione?
Un’eccezione è un evento indesiderato o imprevisto, che si verifica durante l’esecuzione di un programma, cioè in fase di esecuzione, che interrompe il normale flusso delle istruzioni del programma.
Errore vs Eccezione
Errore: un errore indica un problema serio che un’applicazione ragionevole non dovrebbe cercare di catturare.
Eccezione: Eccezione indica le condizioni che un’applicazione ragionevole potrebbe tentare di catturare.,
Gerarchia delle eccezioni
Tutti i tipi di eccezioni ed errori sono sottoclassi di classe Throwable, che è la classe base della gerarchia.Un ramo è diretto da Exception. Questa classe viene utilizzata per condizioni eccezionali che i programmi utente dovrebbero catturare. NullPointerException è un esempio di tale eccezione.Un altro ramo,Error sono utilizzati dal sistema di runtime Java (JVM) per indicare gli errori che hanno a che fare con l’ambiente di runtime stesso(JRE). StackOverflowError è un esempio di tale errore.,
Per le eccezioni controllate e non controllate, vedere Eccezioni controllate e non controllate
Come JVM gestisce un’eccezione?
Gestione delle eccezioni predefinita : ogni volta che all’interno di un metodo, se si è verificata un’eccezione, il metodo crea un oggetto noto come Oggetto eccezione e lo passa al sistema di runtime(JVM). L’oggetto exception contiene il nome e la descrizione dell’eccezione e lo stato corrente del programma in cui si è verificata l’eccezione., La creazione dell’oggetto Exception e la sua gestione nel sistema di runtime viene chiamata generazione di un’eccezione.Potrebbe esserci l’elenco dei metodi che sono stati chiamati per accedere al metodo in cui si è verificata l’eccezione. Questo elenco ordinato dei metodi è chiamato Call Stack.Ora avverrà la seguente procedura.
- Il sistema di runtime cerca lo stack di chiamate per trovare il metodo che contiene il blocco di codice in grado di gestire l’eccezione verificatasi. Il blocco del codice è chiamato Gestore di eccezioni.,
- Il sistema di runtime inizia la ricerca dal metodo in cui si è verificata l’eccezione, procede attraverso lo stack di chiamate nell’ordine inverso in cui sono stati chiamati i metodi.
- Se trova il gestore appropriato, passa l’eccezione avvenuta ad esso. Gestore appropriato indica che il tipo di oggetto exception generato corrisponde al tipo di oggetto exception che può gestire.,
- Se il sistema di runtime cerca tutti i metodi sullo stack di chiamate e non ha trovato il gestore appropriato , il sistema di runtime consegna l’oggetto Exception al gestore di eccezioni predefinito, che fa parte del sistema di runtime. Questo gestore stampa le informazioni sulle eccezioni nel seguente formato e termina il programma in modo anomalo.
Exception in thread "xxx" Name of Exception : Description... ...... .. // Call Stack
Vedere lo schema seguente per comprendere il flusso dello stack di chiamate.,>
{
System.out.println(ex.getMessage());
}
}
}
Output :
/ by zero.
How Programmer handles an exception?,
Gestione delle eccezioni personalizzata : la gestione delle eccezioni Java viene gestita tramite cinque parole chiave: try, catch, throw, throws e infine. In breve, ecco come funzionano. Le istruzioni del programma che si ritiene possano generare eccezioni sono contenute all’interno di un blocco try. Se si verifica un’eccezione all’interno del blocco try, viene generata. Il tuo codice può catturare questa eccezione (usando catch block) e gestirla in qualche modo razionale. Le eccezioni generate dal sistema vengono generate automaticamente dal sistema di runtime Java. Per generare manualmente un’eccezione, utilizzare la parola chiave throw., Qualsiasi eccezione che viene eliminata da un metodo deve essere specificata come tale da una clausola throws. Qualsiasi codice che deve assolutamente essere eseguito dopo il completamento di un blocco try viene inserito in un blocco finally.
Articolo dettagliato: Flusso di controllo in try catch infine blocco
Necessità di clausola try-catch(gestione delle eccezioni personalizzata)
Si consideri il seguente programma java.
Output:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4 at GFG.main(GFG.java:9)
Spiegazione : Nell’esempio precedente un array è definito con dimensioni cioè, è possibile accedere agli elementi solo dall’indice 0 a 3. Ma stai cercando di accedere agli elementi all’indice 4 (per errore) ecco perché sta lanciando un exception.In in questo caso, JVM termina il programma in modo anomalo. Il sistema di istruzione.fuori.println (“Ciao, voglio eseguire””; non eseguirà mai. Per eseguirlo, dobbiamo gestire l’eccezione usando try-catch. Quindi per continuare il normale flusso del programma, abbiamo bisogno della clausola try-catch.,
Come usare la clausola try-catch
Punti da ricordare:
- In un metodo, possono esserci più istruzioni che potrebbero generare eccezioni, quindi mettere tutte queste istruzioni all’interno del proprio blocco try e fornire un gestore di eccezioni separato all’interno del proprio blocco catch per ognuna di esse.
- Se si verifica un’eccezione all’interno del blocco try, tale eccezione viene gestita dal gestore di eccezioni ad esso associato. Per associare gestore di eccezioni, dobbiamo mettere blocco catch dopo di esso. Ci possono essere più di un gestore di eccezioni., Ogni blocco catch è un gestore di eccezioni che gestisce l’eccezione del tipo indicato dal suo argomento. L’argomento, ExceptionType dichiara il tipo di eccezione che può gestire e deve essere il nome della classe che eredita dalla classe Throwable.
- Per ogni blocco try ci possono essere zero o più blocchi catch, ma solo uno infine blocco.
- Il blocco finally è optional.It viene sempre eseguito se si è verificata un’eccezione nel blocco try o meno . Se si verifica un’eccezione, verrà eseguita dopo i blocchi try and catch., E se l’eccezione non si verifica, verrà eseguita dopo il blocco try. Il blocco finally in java viene utilizzato per inserire codici importanti come il codice di pulizia, ad esempio la chiusura del file o la chiusura della connessione.
Sommario
- Tipi di Eccezioni in Java
- Controllato vs Eccezioni Unchecked
- Throw – Getta in Java
Riferimento :
Questo articolo è un contributo di Nitsdheerendra e Gaurav Miglani. Se ti piace GeeksforGeeks e vorresti contribuire, puoi anche scrivere un articolo usando contribute.geeksforgeeks.,org o posta il tuo articolo a [email protected]. Vedere il tuo articolo che appare sulla pagina principale GeeksforGeeks e aiutare altri Geek.
Si prega di scrivere commenti se trovate qualcosa di sbagliato, o se si desidera condividere ulteriori informazioni sull’argomento discusso sopra.
Lettore di attenzione! Non smettere di imparare ora. Entra in possesso di tutti gli importanti concetti di Java Foundation e Collections con i fondamenti del corso Java e Java Collections ad un prezzo adatto agli studenti e diventa pronto per l’industria.,