Domanda

Perché ha senso avere eccezioni runtime UnChecked (al contrario di se fossero Controllato )?

È stato utile?

Soluzione

Se non hai che avrebbe dovuto avere blocchi try / catch ogni volta che si accede un elemento dell'array, ha fatto un'operazione di divisione e molti altri scenari comuni.

Per dirla in altro modo, immaginare questo codice:

Map map = ...
int i = ...
(int[])map.get("foo")[3] = 2334 / i;

avrebbe dovuto verificare la presenza di ClassCastException, ArrayIndexOutofBoundsException, ArithmeticException, UnsupportedOperationException e NullPointerException appena fuori dalla parte superiore della mia testa.

Con Java il problema non è eccezioni unchecked. eccezioni controllate sono un argomento molto controverso. Alcuni dicono che questo era in gran parte un esperimento con Java e in pratica non funzionano, ma troverete un sacco di persone che sostengono che sono buone.

Nessuno sta discutendo eccezioni unchecked sono male comunque.

Altri suggerimenti

L'idea dei due tipi di eccezioni in Java (controllato e incontrollato) è che le eccezioni controllate devono essere utilizzati per le condizioni di errore che possono ragionevolmente prevedere che si verificherà, e le eccezioni non controllato devono essere utilizzati per le condizioni di errore impreviste.

Per esempio, se un file non viene trovato, si ottiene un FileNotFoundException, ed è ragionevole aspettarsi che il vostro programma per essere in grado di gestire una tale condizione. eccezioni unchecked dovrebbero essere utilizzati solo per i problemi che non dovrebbero accadere, e che in realtà significa che c'è un bug nel programma se tale problema si verifica. Ad esempio, un NullPointerException significa che il programma sta tentando di dereference una variabile che è null e questo è molto probabilmente un bug.

Il compilatore Java costringe il programmatore per gestire le eccezioni controllate. Questo rende il linguaggio di programmazione più sicuro -. Vuol dire che il programmatore è costretto a pensare a condizioni di errore, che dovrebbe rendere il programma più robusto

Il compilatore non controlla eccezioni unchecked, perché eccezioni unchecked non dovrebbero accadere in ogni caso e se lo fanno, non c'è niente che il programma potrebbe ragionevolmente fare in fase di esecuzione; il programmatore deve risolvere il bug.

Ci sono state alcune critiche per questa funzionalità in Java, alcune persone anche chiamano eccezioni controllate un esperimento fallito e alcune persone propongono per rimuovere le eccezioni controllate da Java.

Questo significa semplicemente che il compilatore non vi costringerà a cercare un'eccezione, ma è ancora possibile buttare in fase di esecuzione. Come un vantaggio, questo ti permette di gettare nuove eccezioni dalle classi senza la necessità di modificare l'interfaccia, causando i chiamanti a cambiare il loro codice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top