Eccezioni Java Tutorial

October 7

Un'eccezione si verifica quando si verifica una situazione anomala (ad esempio un errore o un problema) che un metodo è in grado di gestire. Il metodo termina per "lanciare" una eccezione, comunicando alla funzione di chiamata che il metodo è terminato in modo anomalo, e passando di nuovo le informazioni sulle condizioni della situazione. Questa informazione è incapsulato in oggetto eccezione ributtato alla funzione chiamante.

eccezioni di base

Java offre tre tipi fondamentali di eccezioni: eccezioni controllate, gli errori e le eccezioni di runtime.

eccezioni controllate sono gettati per i problemi che ci si attende che possono ragionevolmente essere trattati, come ad esempio la richiesta di un file inesistente. eccezioni controllate devono essere catturati e sia gestito dalla funzione chiamante o gettati fino a una funzione di chiamata più alto. Questo requisito viene indicato come il "Requisito di cattura o Specifica." Tutto eccezioni controllate sono derivate dalla classe Exception.

Gli errori vengono gettati quando si verifica un errore grave esterni all'applicazione che non possono essere ragionevolmente gestito, come ad esempio errori di memoria e di stack overflow. Tutti gli errori sono derivate dalla classe di errore.

eccezioni runtime sono gettati quando si verifica un errore grave all'interno dell'applicazione che non possono essere ragionevolmente gestito, come ad esempio gli argomenti illegali e parametri. Tutte le eccezioni di runtime sono derivate dalla classe RuntimeException.

Gli errori e le eccezioni di runtime sono entrambi eccezioni non controllate. eccezioni unchecked non sono soggetti alla cattura o specificare requisito perché il recupero aggraziata da questi tipi di eccezioni non è previsto.

Classi di eccezioni, degli errori e RuntimeException sono tutti derivati ​​dalla classe Throwable. Da Throwable, queste classi ereditano funzioni utili per la segnalazione degli errori e debugging. Per esempio, getMessage restituisce il messaggio di errore leggibile associata con l'eccezione, e printStackTrace stampa le informazioni dettagliate a un corso d'acqua o scrittore specificato. È possibile creare eccezioni specializzati ereditando da Exception, RuntimeException o loro sottoclassi.

eccezioni speciali

Java offre numerose classi di eccezione derivate dalle classi di base. eccezioni specializzati possono offrire funzioni aggiuntive per il recupero di informazioni dettagliate specifiche per la situazione. Ad esempio, le funzioni di connettività di database Java possono lanciare una SQLException. Questa eccezione specializzata ha funzioni per il recupero di informazioni sullo stato di SQL e il codice di errore specifico del fornitore relative al l'eccezione. Cattura e la gestione delle eccezioni specifiche permette di accedere a una vasta gamma di ulteriori informazioni non disponibili se solo cattura e gestire le eccezioni genitore-classe generica.

Gestione delle eccezioni: try, catch, infine

Utilizzare try, catch, e, infine, blocchi per catturare e gestire le eccezioni. Posizionare il codice che potrebbe generare un'eccezione nel blocco try. Fornire un blocco catch per gestire ogni possibile eccezione, con le istruzioni per gestire l'eccezione in base al tipo di eccezione e l'informazione l'eccezione fornisce. Manipolazione eccezione potrebbe coinvolgere avvisando l'utente dell'errore, richiede input dell'utente corretto, automaticamente recuperando l'errore o un'eccezione fino a un livello superiore. Codice nel blocco finally viene sempre eseguito quando il blocco try si esce, se si esce normalmente o un'eccezione è stato catturato.

In questo semplice esempio, l'applicazione tenta di aprire un file ed elaborarlo. Se un'eccezione viene catturato, alcune informazioni eccezione viene stampata, e l'esecuzione continua. Infine, l'applicazione pulisce chiudendo il flusso di file se necessario.

FileReader fr = null
ANDARE
provare {
fr = new FileReader ( "myfile.txt")
ANDARE
... (Il codice per leggere ed elaborare il file) ...
}
catch (FileNotFoundException ex) {

System.out.println(ex.getMessage())

ANDARE
}
catch (IOException ex) {

System.out.println(ex.getMessage())

ANDARE
}
finalmente {

if (fr != null) fr.close()

ANDARE
}

Lanciare eccezioni

Per generare eccezioni da una funzione, specificare questo utilizzando la clausola throws nella dichiarazione di funzione, fornendo un elenco di eccezioni che possono essere lanciate. Per esempio:

vuoto getData () throws IOException, FileNotFoundException {

Viene generata un'eccezione con una dichiarazione "buttare". Un'eccezione catturati o creata può essere gettato. Per esempio:

vuoto getData () genera SomeOtherException, FileNotFoundException {
FileReader fr = null
ANDARE
provare {

fr = new FileReader(“myfile.txt”)

ANDARE

... (code to read and process the file) ...

}
catch (FileNotFoundException ex) {

throw ex

ANDARE
}
catch (IOException ex) {

throw new SomeOtherException(ex)

ANDARE
}
finalmente {

if (fr != null) fr.close()

ANDARE
}
}