Differenza tra eccezione controllata e eccezione di runtime

Anonim

Eccezione di controllo o eccezione di runtime

Le eccezioni sono eventi speciali che possono disturbare il normale flusso di programmi. L'eccezione di nome deriva da "evento eccezionale". Lanciare un'eccezione è il processo di creazione di un oggetto di eccezione e di consegnarlo al sistema di runtime. Quando il sistema di runtime riceve l'oggetto di eccezione, cercherà qualcuno a gestirlo all'interno dello stack di chiamata attraversandolo nell'ordine inverso (in cui i metodi venivano chiamati). Il sistema di runtime ha successo se trova un metodo con un gestore di eccezioni. Il gestore di eccezione è un blocco di codice che può gestire ufficialmente la suddetta eccezione. Se il sistema di runtime trova un gestore appropriato, passerà l'oggetto di eccezione al gestore. Questo è chiamato a catturare 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 le eccezioni su cui il compilatore applica la gestione. Le eccezioni di runtime sono un tipo di eccezioni, che non sono controllate dal compilatore.

Che cosa è un'eccezione controllata?

Le eccezioni controllate sono o oggetti della classe java. Lang. eccezione o le sue sottoclasse (ad eccezione del java lang lang.RuntimeException e delle sue sottoclasse). Le eccezioni controllate vengono "controllate" al momento della compilazione. Ciò significa che il programmatore deve catturare o lanciare queste eccezioni, altrimenti la compilazione si lamenterebbe (causando un errore di compilatore). A causa di questo motivo, molte eccezioni controllate sono ben noti ai programmatori. Ad esempio, l'IOException e le sue sottocategorie sono controllate dalle eccezioni e ogni volta che il programmatore si occupa dell'accesso o della modifica di un file, il compilatore controlla per assicurarsi che tutti i possibili IOExceptions siano curati dal programmatore.

Che cosa è un'eccezione di runtime?

Le eccezioni di runtime consistono in java. Lang. RuntimeException e tutte le sue sottocategorie. In teoria, essi servono allo stesso scopo delle eccezioni controllate e possono essere gettate o gestite come eccezioni controllate, ma la loro manipolazione non viene eseguita dal compilatore. Pertanto, le eccezioni di runtime appartengono alla famiglia di eccezioni non controllate. NullPointerException, NumberFormatEception, ClassCastException e ArrayIndexOutOfBoundsException sono eccezioni di runtime comuni in Java.

Qual è la differenza tra l'eccezione di controllo e l'eccezione di runtime?

Anche se entrambe le eccezioni controllate e le eccezioni di runtime sono eventi occorsi durante l'esecuzione di un programma, hanno le loro differenze. La gestione delle eccezioni controllate viene eseguita dal compilatore, ma le eccezioni di runtime non sono.Pertanto, le eccezioni controllate devono essere gettate o gestite in modo che il codice venga compilato, ma non esiste un requisito di questo tipo per quanto riguarda le eccezioni di runtime. Di conseguenza, le eccezioni di runtime appartengono alla categoria di eccezioni non verificate insieme agli errori.

Svantaggio con eccezioni controllate è che il programmatore deve gestirlo anche se non sa come farlo. Quindi, se il programmatore lancia appena una nuova eccezione senza avvolgere l'originale, la traccia di stack appartenente all'originale originale verrà persa. Questo è dove le eccezioni di runtime vengono utili. Poiché tutte le eccezioni di runtime possono essere gestite in un unico punto, i programmatori possono scrivere meno quantità di codice. D'altra parte, poiché le eccezioni controllate devono essere catturate, non c'è sorpresa per il programmatore. Saprà sempre quale eccezione poteva essere gettata da un certo metodo. Contrariamente a questo, diverse eccezioni di runtime possono essere gettate senza la conoscenza del programmatore.