Eccezione
Un'eccezione (abbreviazione di "evento eccezionale") è un errore o un evento imprevisto che si verifica mentre è in esecuzione un programma. Quando si verifica un'eccezione, il flusso del programma viene interrotto. Se il programma è in grado di gestire ed elaborare l'eccezione, può continuare a essere eseguito. Se un'eccezione non viene gestita, il programma potrebbe essere costretto a terminare.
Diverse lingue di programmazione supportano le eccezioni, anche se le usano in modi diversi. Per esempio, le eccezioni sono una parte integrante del linguaggio Java e vengono spesso usate per controllare il flusso di un programma. Java include una classe Exception, che ha decine di sottoclassi, come TimeoutException, UserException e IOException. Sottoclassi come IOException contengono eccezioni più specifiche, come FileNotFoundException e CharacterCodingException, che possono essere "sollevate" se un file non viene trovato o se la codifica dei caratteri di una stringa non viene riconosciuta.
Altri linguaggi usano le eccezioni solo per intercettare errori di runtime fondamentali, come il mancato allocamento della memoria o errori a livello di sistema. Per esempio, un programma C++ può sollevare l'eccezione bad_alloc quando non è possibile allocare memoria e l'eccezione system_error quando il sistema operativo produce un errore.
Gestione delle eccezioni
Un programma per computer ben scritto verifica la presenza di eccezioni e le gestisce in modo appropriato. Questo significa che lo sviluppatore deve verificare la presenza di eccezioni probabili e scrivere codice per elaborarle. Se un programma gestisce bene le eccezioni, gli errori imprevisti possono essere rilevati e gestiti senza far bloccarsi il programma.
Le eccezioni vengono "sollevate" quando si verificano e "intercettate" da altro codice del programma. Possono essere sollevate esplicitamente usando l'istruzione throw oppure implicitamente all'interno di una clausola try. Di seguito è riportato un esempio della sintassi "try / catch" in Java. Il codice seguente tenta di dividere per zero, ma solleva un'eccezione ArithmeticException e restituisce 0 come risultato.
1. int a = 11;
2. int b = 0;
3. int result = 0;
4. try {
5. int c = a / b;
6. result = c;
7. } catch(ArithmeticException ex) {
8. result = 0;
9. }
10. return result;
Un'eccezione viene sollevata alla riga 5 (quando 11 viene diviso per 0), quindi il resto dell'istruzione try (riga 6) non viene eseguito. L'eccezione viene invece intercettata alla riga 7 e viene restituito un risultato pari a 0.
Metti alla prova le tue conoscenze