Differenza tra eccezione verificata e eccezione del runtime

Eccezione controllata eccezione di runtime

Le eccezioni sono tipi speciali di eventi che possono 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. 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). 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, 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. Le eccezioni controllate sono eccezioni su cui la gestione è applicata dal compilatore. Le eccezioni del runtime sono un tipo di eccezioni, che non vengono verificate dal compilatore.

Cos'è un'eccezione controllata?

Le eccezioni controllate sono oggetti della classe java.lang.exception o delle sue sottoclassi (tranne java.lang.RuntimeException e le sue sottoclassi). Le eccezioni controllate sono "spuntate" al momento della compilazione. Ciò significa che il programmatore deve prendere o lanciare queste eccezioni, altrimenti la compilazione si lamenterebbe (causando un errore del compilatore). Per questo motivo, molte eccezioni controllate sono ben note ai programmatori. Ad esempio, IOException e le sue sottoclassi sono eccezioni controllate, e ogni volta che il programmatore ha a che fare con l'accesso o la modifica di un file, i controlli del compilatore assicurano che tutte le possibili IOException siano prese in carico dal programmatore.

Cos'è un'eccezione di runtime?

Le eccezioni del runtime consistono in java.lang.RuntimeException e in tutte le sue sottoclassi. In teoria, hanno lo stesso scopo delle eccezioni controllate e possono essere lanciati o gestiti come l'eccezione verificata, ma la loro gestione non viene applicata dal compilatore. Pertanto, le eccezioni del runtime appartengono alla famiglia delle eccezioni non controllate. NullPointerException, NumberFormatEception, ClassCastException e ArrayIndexOutOfBoundsException sono eccezioni di runtime comuni in Java.

Qual è la differenza tra Eccezione controllata e Eccezione runtime?

Anche se entrambe le eccezioni controllate e le eccezioni di runtime sono occorrenze indesiderate durante l'esecuzione di un programma, hanno le loro differenze. La gestione delle eccezioni controllate viene applicata dal compilatore, ma le eccezioni di runtime non lo sono. Pertanto, le eccezioni controllate devono essere generate o gestite affinché il codice possa essere compilato, ma non esiste un tale requisito relativo alle eccezioni di runtime. Di conseguenza, le eccezioni di runtime appartengono alla categoria di eccezioni non controllata insieme agli errori.

Lo svantaggio con le eccezioni controllate è che il programmatore deve gestirlo anche se non sa come. Quindi, se il programmatore lancia appena una nuova eccezione senza avvolgere l'originale, la traccia dello stack appartenente all'eccezione originale andrà persa. Questo è dove le eccezioni di runtime sono utili. Poiché tutte le eccezioni del runtime possono essere gestite in un unico posto, i programmatori possono quindi scrivere meno quantità di codice. D'altra parte, poiché le eccezioni controllate devono essere catturate, non c'è alcuna sorpresa per il programmatore. Saprà sempre quale eccezione controllata potrebbe essere generata da un certo metodo. Contrariamente a ciò, diverse eccezioni di runtime possono essere generate senza la conoscenza del programmatore.