Eccezione vs errore
Il comportamento imprevisto è destinato a verificarsi quando un programma è in esecuzione. Ciò potrebbe essere dovuto a eccezioni o errori. Le eccezioni sono eventi che possono disturbare il normale flusso del programma. Gli errori sono condizioni che possono essere considerate irrecuperabili. Le eccezioni sono per lo più correlate all'applicazione stessa, mentre gli errori sono correlati al sistema su cui è in esecuzione il programma.
Cos'è un'eccezione?
L'eccezione è un evento che può disturbare il normale flusso del programma. L'eccezione del nome deriva da "evento eccezionale". Lanciare un'eccezione è il processo di creazione di un oggetto eccezione e la sua consegna al sistema runtime. L'oggetto Exception viene creato dal metodo in cui si è verificata l'eccezione. L'oggetto Exception contiene informazioni utili come il tipo e la descrizione dell'eccezione. Quando il sistema di runtime riceve l'oggetto di eccezione, cercherà di trovare qualcuno che lo gestisca all'interno dello stack di chiamate attraversandolo nell'ordine inverso (in cui sono stati chiamati i metodi). Lo stack di chiamate è l'elenco ordinato di metodi, che sono stati chiamati prima del metodo in cui si è verificata l'eccezione. Il sistema di runtime ha successo se trova un metodo con un gestore di eccezioni. Il gestore di eccezioni è un blocco di codice che può gestire ufficialmente la suddetta eccezione. Se il sistema runtime trova un gestore appropriato (ovvero il tipo di eccezione corrisponde al tipo che può essere gestito), passerà l'oggetto eccezione al gestore. Questo è chiamato prendere l'eccezione. Tuttavia, se l'eccezione non può essere gestita, il programma terminerà. In Java, le eccezioni ereditano dalla 'classe Throwable'. NullPointerException e ArrayIndexOutOfBoundsException sono due eccezioni comuni in Java.
Che cos'è un errore?
Un errore è una condizione che può essere considerata irrecuperabile come il programma che richiede una quantità di memoria maggiore di quella disponibile. Questi errori non possono essere gestiti in fase di runtime. Se si verifica un errore, il programma terminerà. In Java, gli errori ereditano dalla classe Throwable. Gli errori di solito rappresentano problemi seri che il programmatore (o l'applicazione) non dovrebbero provare a catturare. Gli errori sono semplicemente condizioni anormali, che non dovrebbero mai verificarsi in circostanze normali e quindi mai previste. Ad esempio, OutOfMemoryError, StackOverflowError e ThreadDead sono tali errori. I metodi non dovrebbero mai avere gestori per errori.
Qual è la differenza tra Eccezione ed Errore?
Entrambi gli errori e le eccezioni sono occorrenze indesiderate durante l'esecuzione di un programma. Tuttavia, hanno differenze fondamentali. Eccezioni possono essere previste dal programmatore, mentre è difficile prevedere un errore. Le eccezioni possono essere selezionate o deselezionate. Ma gli errori sono sempre deselezionati. Le eccezioni in genere indicano un errore causato dal programmatore. Tuttavia, gli errori si verificano a causa di un errore di sistema o di un uso inappropriato di una risorsa. Pertanto, le eccezioni dovrebbero essere gestite a livello di applicazione, mentre gli errori dovrebbero essere risolti a livello di sistema (solo se possibile). Dopo aver gestito un'eccezione, si è certi di tornare al normale flusso del programma. Ma anche se viene rilevato un errore, il programmatore potrebbe non sapere come gestirlo in primo luogo. A differenza della tradizionale gestione degli errori, le eccezioni consentono di separare il codice di gestione degli errori dal codice normale.