Gli errori sono la rovina degli utenti e dei programmatori. Gli sviluppatori ovviamente non vogliono che i loro programmi cadano ad ogni turno e gli utenti sono così abituati ad avere errori programmi che accettano a malincuore di pagare il prezzo di un software che avrà quasi sicuramente un errore esso. Giava è progettato per offrire al programmatore un'opportunità sportiva nella progettazione di un'applicazione senza errori. Ci sono eccezioni che il programmatore saprà che sono possibili quando un'applicazione interagisce con una risorsa o un utente e queste eccezioni possono essere gestite. Sfortunatamente, ci sono eccezioni che il programmatore non può controllare o semplicemente trascura. In breve, tutte le eccezioni non sono create uguali e quindi ci sono diversi tipi a cui un programmatore deve pensare.
Un'eccezione è un evento che impedisce al programma di fluire nell'esecuzione prevista. Esistono tre tipi di eccezione: l'eccezione selezionata, l'errore e l'eccezione di runtime.
L'eccezione controllata
Le eccezioni controllate sono eccezioni che un'applicazione Java dovrebbe essere in grado di affrontare. Ad esempio, se un'applicazione legge i dati da un file, dovrebbe essere in grado di gestire FileNotFoundException
. Dopotutto, non vi è alcuna garanzia che il file previsto sarà dove dovrebbe essere. Tutto potrebbe succedere sul file system, di cui un'applicazione non avrebbe idea.
Per fare un ulteriore esempio di questo esempio. Diciamo che stiamo usando FileReader
classe per leggere un file di caratteri. Se dai un'occhiata a Definizione del costruttore FileReader nell'API Java vedrai la sua firma del metodo:
public FileReader (String fileName) genera FileNotFoundException.
Come puoi vedere, il costruttore afferma specificamente che FileReader
il costruttore può lanciare a FileNotFoundException
. Questo ha senso in quanto è altamente probabile che il nome del file
Di tanto in tanto la stringa sarà sbagliata. Guarda il seguente codice:
public static void main (String [] args) { FileReader fileInput = null; // Apri il file di input. fileInput = new FileReader ("Untitled.txt"); }
Sintatticamente le istruzioni sono corrette ma questo codice non verrà mai compilato. Il compilatore conosce il FileReader
il costruttore può lanciare a FileNotFoundException
e spetta al codice chiamante gestire questa eccezione. Ci sono due scelte: in primo luogo possiamo trasmettere l'eccezione dal nostro metodo specificando a getta
anche la clausola:
public static void main (String [] args) genera FileNotFoundException { FileReader fileInput = null; // Apri il file di input. fileInput = new FileReader ("Untitled.txt"); }
Oppure possiamo effettivamente gestire con l'eccezione:
public static void main (String [] args) { FileReader fileInput = null; provare. { // Apri il file di input. fileInput = new FileReader ("Untitled.txt"); } catch (FileNotFoundException ex) { // dice all'utente di andare a trovare il file. } }
Le applicazioni Java ben scritte dovrebbero essere in grado di far fronte alle eccezioni verificate.
Errori
Il secondo tipo di eccezione è noto come errore. Quando si verifica un'eccezione, il JVM creerà un oggetto eccezione. Questi oggetti derivano tutti dal Throwable
classe. Il Throwable
la classe ha due sottoclassi principali: Errore
e Eccezione
. Il Errore
La classe indica un'eccezione che un'applicazione non è in grado di gestire.
Queste eccezioni sono considerate rare. Ad esempio, la JVM potrebbe esaurire le risorse a causa dell'hardware non in grado di far fronte a tutti i processi che deve affrontare. È possibile che l'applicazione rilevi l'errore per avvisare l'utente, ma in genere l'applicazione deve chiudere fino a quando non viene risolto il problema sottostante.
Eccezioni di runtime
UN eccezione di runtime si verifica semplicemente perché il programmatore ha commesso un errore. Hai scritto il codice, tutto sembra buono per il compilatore e quando vai a eseguire il codice, cade perché lo fa tentato di accedere a un elemento di un array che non esiste o un errore logico ha causato la chiamata di un metodo con un valore null valore. O un numero qualsiasi di errori che un programmatore può fare. Ma va bene, individuiamo queste eccezioni con test esaustivi, giusto?
Gli errori e le eccezioni di runtime rientrano nella categoria delle eccezioni non selezionate.