Differenza tra l'eccezione verificata e l'eccezione di runtime

Differenza tra l'eccezione verificata e l'eccezione di runtime
Differenza tra l'eccezione verificata e l'eccezione di runtime

Video: Differenza tra l'eccezione verificata e l'eccezione di runtime

Video: Differenza tra l'eccezione verificata e l'eccezione di runtime
Video: FTP (File Transfer Protocol), SFTP, TFTP Explained. 2024, Luglio
Anonim

Eccezione verificata rispetto a 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". La generazione di un'eccezione è il processo di creazione di un oggetto eccezione e di consegna al sistema di runtime. Quando il sistema di runtime riceve l'oggetto 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 esito positivo 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 di runtime trova un gestore appropriato, passerà l'oggetto eccezione al gestore. Questo è chiamato catturare l'eccezione. Tuttavia, se l'eccezione non può essere gestita, il programma verrà terminato. In Java, le eccezioni ereditano dalla classe Throwable. Le eccezioni controllate sono eccezioni su cui la gestione è imposta dal compilatore. Le eccezioni di runtime sono un tipo di eccezioni che non vengono controllate dal compilatore.

Che cos'è un'eccezione verificata?

Le eccezioni controllate sono oggetti della classe java.lang.exception o delle sue sottoclassi (tranne java.lang. RuntimeException e le sue sottoclassi). Le eccezioni selezionate vengono "controllate" in fase di compilazione. Ciò significa che il programmatore deve catturare o lanciare queste eccezioni, altrimenti la compilazione si lamenterebbe (causando un errore del compilatore). Per questo motivo, molte eccezioni controllate sono molto 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, il compilatore controlla per assicurarsi che tutte le possibili IOExceptions siano gestite dal programmatore.

Cos'è un'eccezione di runtime?

Le eccezioni di runtime consistono in java.lang. RuntimeException e tutte le sue sottoclassi. In teoria, servono allo stesso scopo delle eccezioni verificate e possono essere lanciate o gestite come eccezioni verificate, ma la loro gestione non è imposta dal compilatore. Pertanto, le eccezioni di runtime appartengono alla famiglia delle eccezioni non controllate. NullPointerException, NumberFormatEception, ClassCastException e ArrayIndexOutOfBoundsException sono eccezioni di runtime comuni in Java.

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

Sebbene sia le eccezioni verificate che le eccezioni di runtime siano occorrenze indesiderate durante l'esecuzione di un programma, hanno le loro differenze. La gestione delle eccezioni verificata viene applicata dal compilatore, ma le eccezioni di runtime non lo sono. Pertanto, le eccezioni verificate devono essere generate o gestite affinché il codice venga compilato, ma non esiste alcun requisito di questo tipo per quanto riguarda le eccezioni di runtime. Di conseguenza, le eccezioni di runtime appartengono alla categoria delle eccezioni non selezionate insieme agli errori.

Lo svantaggio delle eccezioni controllate è che il programmatore deve gestirlo anche se non sa come farlo. Pertanto, se il programmatore genera semplicemente una nuova eccezione senza eseguire il wrapping dell'originale, la traccia dello stack appartenente all'eccezione originale andrà persa. È qui che le eccezioni di runtime tornano utili. Poiché tutte le eccezioni di runtime possono essere gestite in un'unica posizione, i programmatori possono scrivere una quantità inferiore di codice. D' altra parte, poiché le eccezioni controllate devono essere catturate, non c'è sorpresa per il programmatore. Saprà sempre quale eccezione verificata potrebbe essere generata da un determinato metodo. Contrariamente a ciò, è possibile generare varie eccezioni di runtime all'insaputa del programmatore.

Consigliato: