Come creare classi di eccezioni in Java

October 14

Il linguaggio di programmazione Java ha un approccio basato eccezioni a gestire il rilevamento degli errori e la gestione di codice. Invece di creare un complesso sistema di istruzioni nidificate if-else per cercare di cogliere ogni possibile errore, tutti gli errori di cattura può essere organizzata in una serie di dichiarazioni \ "try-catch \" alla fine di una funzione. Questo permette il controllo degli errori di uscire del modo di flusso reale del programma e porta a più leggibile, codice più facile da mantenere.

istruzione

1 Scegli una classe genitore. Ogni sottoclasse di java.lang.Exception può essere utilizzato come genitore per una nuova classe di eccezioni. Tuttavia, per questo esempio, si utilizza la classe Exception base come genitore. Eccezione ci dà tutte le necessità di base di un'eccezione: è throwable, si può stampare una traccia dello stack, e permette un messaggio da recuperare sulla natura dell'eccezione.

2 Creare una sottoclasse che estende la classe genitore. Questo è lo stesso di creare qualsiasi altra sottoclasse in Java. Per una buona leggibilità del codice, che è di serie per terminare sempre il nome della classe con la parola "eccezione". Per questo esempio, si crea un'eccezione per la gestione dell'input dell'utente cattivo, chiamato, abbastanza semplice, BadUserInputException.

public class BadUserInputException estende Exception {
}

Questo codice solo in realtà ti dà tutto il necessario per partire immediatamente lancio e la cattura di questa eccezione, e in molti casi, questo sarà tutto ciò che serve.

3 Aggiungere eventuali caratteristiche uniche per la vostra eccezione. Si consiglia la classe eccezione di avere alcune caratteristiche uniche sopra e al di là della capacità di essere gettato e catturato con una stampa traccia dello stack fuori. Quindi, si aggiungerà alcune nuove informazioni per la classe eccezione.

public class BadUserInputException estende Exception {
String inputString privato
ANDARE

getInputString pubblico () {return (inputString); }

BadUserInputException pubblico (ingresso String) {
super()
ANDARE
inputString = ingresso
ANDARE
}
ANDARE
}

Ora, la vostra eccezione avrà una funzione extra, getInputString (), che può essere chiamato in qualsiasi momento il vostro eccezione viene generata per ottenere una copia del input dell'utente cattivo in questione da stampare a un registro degli errori o di esame da parte del programma per determinare cosa fare dopo.

4 Aggiungere una dichiarazione tiro di funzioni che possono causare l'eccezione che si verifichi. Un'eccezione è inutile a meno che non si getta da una funzione. Una dichiarazione tiro passa essenzialmente un errore lo stack per consentire una parte di più alto livello del programma per determinare che cosa dovrebbe essere fatto con esso. Questo BadUserException verrà generata da una funzione getUserInput (), in modo abbastanza appropriato:

/ *


Javadoc per getUserInput. Si vuole qui ricordare
che questa funzione genera un BadUserInputException
in modo da sapere per la cattura in un secondo momento.
@throws BadUserInputException In caso di input non validi.
@return l'input dell'utente, se è gettato non fa eccezione.
* /
public String getUserInput () genera BadUserInputException {
BufferedReader in = new BufferedReader (nuovo InputStreamReader (System.in))
ANDARE
Ingresso String = in.readLine ()
ANDARE
if (! ValidInput (ingresso) gettare BadUserInputException (ingresso)
ANDARE
Ingresso ritorno altro
ANDARE
}

5 Aggiungere il codice per intercettare l'eccezione quando si utilizzano le funzioni che lo utilizzano. Questo permetterà al programma di reagire agli errori in modo pulito controllato. Il codice per farlo sarà simile a questo semplice esempio:

gameLoop public void () {
provare {
printMenu ()
ANDARE
scelta String = getUserInput ()
ANDARE
if (choice.equals ( "Q")) Esci ()
ANDARE
altro continua ()
ANDARE
} Catch (BadUserIputException e) {
System.out.println ( "Errore:" + e.getInputString () + ": non è input valido.)
ANDARE
}
}

Consigli e avvertenze

  • Si può notare che un'altra classe che deriva dalla classe Throwable è Errore. Mentre è possibile creare le proprie sottoclassi di errore, questo non è raccomandato come errore vuole rappresentare gravi situazioni che una tipica applicazione non dovrebbe cercare di catturare.