Come scrivere il mio gestore di eccezioni in Java

January 23

Come scrivere il mio gestore di eccezioni in Java


Il linguaggio Java fornisce il modello di eccezione per cui gli sviluppatori in grado di gestire situazioni in cui normale esecuzione del programma va storto. Ci sono molti modi in cui un programma può prendere una piega inaspettata, ma alcuni tipi generali di attività sono soggetti a queste situazioni, come input / output, l'elaborazione di array e alcuni calcoli aritmetici. Avere una comprensione di come gestire le eccezioni nei vostri programmi Java è una delle competenze chiave coinvolti nel diventare uno sviluppatore.

istruzione

1 Crea il tuo programma Java, utilizzando il seguente schema come la classe e il metodo principale:

import java.io. *;

public class ExceptionDemo {

Main (string [] args) {public static void

FileWriter FileOut = new FileWriter ( "outputfile.txt");

PrintWriter printOut = new PrintWriter (FileOut);

printOut.println ( "Testo viene stampato su file");

printOut.close ();

fileOut.close ();

}}

Se si incolla questo codice in un IDE (Integrated Development Environment), che evidenzia gli errori di codice, vedrete che non sarà nemmeno in grado di compilare perché non vi è una "eccezione non gestita". Il metodo di costruzione FileWriter può un'eccezione, per esempio se il file è stato specificato non può essere trovato.

2 Inserire il codice con l'eccezione non gestita in un blocco di "provare" come segue:

provare {

FileWriter FileOut = new FileWriter ( "outputfile.txt");

PrintWriter printOut = new PrintWriter (FileOut);

printOut.println ( "Testo viene stampato su file");

printOut.close ();

fileOut.close ();

}

Questo dovrebbe impedire al compilatore di lamentarsi per le linee che causavano errori di eccezione non gestita, ma creerà un nuovo tipo di errore, perché il "provare" l'istruzione non è ancora completa. Il "provare" l'istruzione è fondamentalmente un contenitore per il codice che può generare un'eccezione, ma si devono ancora indicare quello che dovrebbe accadere se un'eccezione è di fatto gettato.

3 Inserire una dichiarazione "catturare" come segue (dopo la chiusura "provare" staffa):

catch (IOException UIE) {

System.err.println ( "IOException si è verificato:" + ioe.getMessage ());

}

Questo dovrebbe essere sufficiente per mantenere il compilatore felice, e vi permetterà di eseguire il programma. Tuttavia, tutto quello che hai fatto è evitare che il programma crash se viene generata un'eccezione a questo punto. A seconda dei dettagli della vostra applicazione, si consiglia di inserire altro codice qui per riflettere ciò che è nel tuo blocco "provare", in quanto non sarà stata eseguita quel codice. Non appena l'eccezione viene generata, l'esecuzione salta direttamente al codice di "catturare".

4 Aggiungere gestori di eccezioni supplementari. A seconda della natura del programma, può essere opportuno includere codice diverso per tipi specifici di eccezione. Ad esempio, prima del gestore "IOException" si potrebbe includere:

catch (FileNotFoundException fnfe) {

System.err.println ( "FileNotFoundException si è verificato:" + fnfe.getMessage ());

}

Questo è un tipo più specifico di errore rispetto alla IOException, per cui se l'eccezione generata non è un FileNotFoundException, il codice salta al gestore più generale IOException, invece. Chaining i gestori di eccezioni in questo modo consente di dettare esattamente ciò che dovrebbe accadere per ogni tipo di errore.

Consigli e avvertenze

  • Opzionalmente si può aggiungere un "finalmente" clausola dopo ciascuna delle sue dichiarazioni "catturare", dettando che cosa accadrà ogni volta che il blocco di "prova" è finita, se un'eccezione viene buttato o no.
  • Eccezioni di ingresso / uscita vengono controllati, motivo per cui i programmi non possono compilare fino a quando non sono stati gestiti. Tuttavia, alcune eccezioni sono "senza controllo", il che significa che hanno maggiori probabilità di incontrarli durante il debug.