212 Shares 1978 views

Java: le eccezioni e la loro gestione

Qualsiasi programma funzionerà stabilmente solo se il codice sorgente è debug, e non ci sono condizioni che possono causare situazioni impreviste. Il processo di recupero possibili guasti viene effettuato sulla fase di programmazione. Per fare questo, lo sviluppatore tiene conto di tutti i risultati attesi e tenta di limitare l'effetto dell'errore in modo che non poteva interferire con il funzionamento del programma, o di portare al suo collasso.

Quando potrebbe essere necessario la gestione delle eccezioni

In Java, un'eccezione può essere causato da input dell'utente non corretta, non c'è bisogno di una risorsa o improvvisa programma di disconnessione dalla rete. Per un uso confortevole creato dallo sviluppatore dell'applicazione, è necessario controllare il verificarsi di situazioni di emergenza. Il consumatore non deve aspettare per uscire da un'applicazione, di perdere i dati a causa di un'eccezione non gestita, o solo parte di un messaggio che indica che qualcosa è andato storto.

La gestione delle eccezioni Java

Cosa prendere in considerazione? Il linguaggio Java ha una propria funzionalità di gestione delle eccezioni built-in. Naturalmente, una grande percentuale di errore e 'colto da un altro fase di compilazione, il sistema notificherà automaticamente che l'uso non è più possibile. Ma non è questo tipo di eccezione che si verifica in fase di esecuzione. Lo sviluppatore dovrebbe essere in grado di anticipare e progettare il codice in modo che non ha causato un errore, e trattati in un modo speciale e consegnato il controllo ad un altro ramo.

In Java, questo viene imposto dal compilatore per intercettare un'eccezione, in modo che i problemi tipici sono noti e hanno modelli di esercizio standard.

esclusioni tipici

L'esempio più semplice, in cui è possibile ottenere un'eccezione – questa divisione. Nonostante la sua semplicità, in termini, come divisorio, può essere zero, che si tradurrà in un errore. Beh, se è possibile prevedere l'emergere del passato e prevenire. Ma questa opzione non è sempre disponibile, in modo da catturare l'eccezione dovrebbe essere organizzata direttamente in caso di "divisione per zero".

Il meccanismo di Java per intercettare errore di elaborazione simile a questa:

  • viene creato oggetto eccezione mucchio, così come qualsiasi altra;
  • il corso naturale del programma è interrotto;
  • meccanismo di esclusione sta cercando di trovare un modo alternativo per continuare il codice;
  • Trovare una sicurezza dell'esecuzione del programma nel processore, lavoro o ripristinato o si verificherà realizzazione di eccezione in modo speciale.

L'esempio più semplice di creare un errore potrebbe essere simile a questo:

if (a == nullo)

throw new NullPointerException ();

Qui, la variabile a è controllato ad inizializzazione, cioè, non è se il riferimento a un oggetto nullo. Se questa situazione si è verificata e hanno bisogno di un trattamento speciale, viene generata un'eccezione da una rimessa nuova NullPointerException ().

Pochi i dettagli sulle parole chiave

Quando si tratta di eccezioni è spesso necessario utilizzare la parola chiave Java per fare riferimento a una particolare azione. Questo linguaggio della loro programmazione cinque:

  • Prova. Questa parola chiave è già incontrato, e significa una transizione in una sezione di codice che può generare un'eccezione. Block parentesi limitate {}.
  • Catch. Intercetta il tipo di eccezione desiderato e gestire in modo appropriato.
  • Infine. Questa parola chiave è opzionale e viene utilizzato per eseguire un certo pezzo di codice, che è richiesto in ogni caso, anche se non fa eccezione non viene catturato. Aggiunto subito dopo blocco try.
  • Gettare – consente di creare eccezioni Java da qualsiasi luogo.
  • Genera – una parola chiave che viene inserito nella firma del metodo. Ciò significa che il seguente codice può generare un'eccezione di questo tipo Java. Questo marchio serve come un segnale per gli sviluppatori che necessitano di essere ricordato – il metodo non può funzionare come previsto da lui.

Facendo con una prova

Rilasciare per eccezioni Java, presuppone, naturalmente, che sarà gestito in modo speciale. Il modo più conveniente per farlo, se la sezione di codice è recintata in un blocco. Che può contenere un'eccezione. Quando si esegue questo codice, la macchina virtuale troverà una situazione inattesa, capire che c'è un blocco critico e trasferisce il controllo alla stazione con l'elaborazione.

Il codice Java è avvolto in un apposito blocco try, entro il quale può essere un'eccezione. Così, pose diverse situazioni impreviste che verranno catturati nello stesso posto, non codice raspolzayas.

Il codice più tipico per l'unità di elaborazione è la seguente:

try {

// Qui è un codice che può generare un'eccezione

} Catch (Tip_isklyucheniya_1 identifikator_1) {

// Qui c'è la gestione delle eccezioni, a seconda del tipo e delle condizioni;

} Catch (Tip_isklyucheniya_2 identifikator_2) {

// Qui c'è la gestione delle eccezioni, a seconda del tipo e delle condizioni;

}

Parole chiave di cattura riporta che il codice, ed eseguire la scansione per un'eccezione, di essere trattati come descritto di seguito, a condizione che sia conforme con il suo tipo. L'identificatore può essere utilizzato per trasformare il blocco di codice come argomenti.

infine

Come è emerso chiaramente dal capitolo precedente, blocchi catch cattura eccezioni e li elaborano. Ma molto spesso la situazione si pone in cui dovrebbe eseguire del codice, indipendentemente dal fatto che sono stati catturati errori. Per questo v'è la parola chiave finalmente. E 'utilizzato per aumentare i valori dei vari contatori, chiudendo i file o le connessioni di rete.

Questo terreno presenta diversi blocchi catch inventato metodi di cattura delle eccezioni. Ad esempio, il codice contenuto nel tentativo genera una situazione inaspettata come il freddo. Quindi, la console verrà visualizzato l'espressione «preso freddo!» E «è che qualcosa di cui rallegrarsi?». Cioè, il blocco finally viene eseguito in ogni caso.

In realtà, un modo per evitare interventi finalmente lì. È collegato con il completamento della macchina virtuale. Trova come implementarlo, è possibile sugli spazi aperti di Internet.

parola chiave tiro

Tiro genera un'eccezione. La sua sintassi è la seguente:

throw new NewException ();

Si crea una nuova eccezione al tipo NewException (). Come un tipo può essere utilizzato è già incluso nelle classi della libreria Java standard e precedentemente definito dallo sviluppatore della propria produzione.

Questo disegno è parte della descrizione di qualsiasi metodo, che la chiamata deve quindi avvenire all'interno del blocco try, in modo da poter intercettare esso.

Chiave getta

Che cosa succede se nel processo di sviluppo di una situazione in cui il metodo può un'eccezione, ma non sono in grado di gestire correttamente. A tal fine, nella firma del metodo specifica la parola getta e il tipo di possibili eccezioni.

Questa etichetta è una sorta di indicatore per sviluppatori client che il metodo non è in grado di gestire la loro stessa eccezione. Inoltre, se il tipo di errore è selezionata, il compilatore forzerà esplicitamente chiedere per essa.

Cercate di risorse

Gli sviluppatori Java versione 7 hanno incluso una grande innovazione, come un blocco try trattamento con le risorse.

Molti oggetti sono creati in Java, dopo l'uso deve essere arrestato per conservare le risorse. In precedenza si è dovuto tener conto di questo e fermare questi casi manualmente. Ora, però, sono apparsi interfaccia AutoClosable. Aiuta a chiudere automaticamente gli oggetti già usati immessi in un blocco try. Attraverso questo approccio è diventato più conveniente scrivere il codice nella sua leggibilità è significativamente aumentata.

classi proprie eccezioni Java

I creatori del linguaggio di programmazione descritto ha tenuto conto di molti aspetti delle tipologie progettuali di emergenze. Tuttavia, tutte le opzioni per evitare che il risultato di eventi non funziona, così in Java implementata la possibilità di definire le proprie eccezioni, è adeguata alle esigenze del particolare codice.

Il modo più semplice per creare – di ereditare dai più appropriato al contesto dell'oggetto.

C'è accaduto di ereditare da Exception, la classe che viene utilizzato per definire i propri eccezioni. In MyException ha due costruttori – un default, il secondo – con l'argomento di tipo String msg.

Poi, nel metodo f FullConstructors aula pubblica attuata, che contiene la firma getta MyException. Questa parola chiave significa che f può lanciare come eccezione Java MyException. Inoltre, nel corpo del metodo prodotta testo di output informazioni sulla console stessa e la MyException generazione effettiva, da tiro.

Il secondo metodo è leggermente diverso dal primo che quando si crea un'eccezione, viene passato un parametro di stringa, che si rifletterà nella console a catturare. Nel complesso, è chiaro che f () eg () sono collocati in un controllo try e catch parola chiave configurata per catturare MyException. Il risultato del trattamento è quello di visualizzare un messaggio di errore alla console:

Così è avvenuto per aggiungere eccezioni Java, per sua stessa mano.

eccezioni Architettura

Come con tutti gli oggetti in Java, le eccezioni sono anche ereditato e hanno una struttura gerarchica. L'elemento principale di tutti gli errori gettati in questo linguaggio di programmazione è di classe java.lang.Throwable. Ereditato da lui due tipi – Errore o di Eccezione.

Errore – segnala l'errore critico ed è eccezioni Java non controllati. Intercettazione e trattamento di questi dati nella maggior parte dei casi si verifica in fase di progettazione e non ha bisogno di introdurre nel codice dell'applicazione finale.

La classe più comunemente usato per la creazione e l'analisi delle eccezioni è Exception. Il che, a sua volta, è divisa in diversi rami, tra cui RuntimeException. Con RuntimeException sono eccezioni runtime, cioè, che si verificano durante il programma. Tutte le classi che ne derivano sono verificabili.

Spesso ci sono delle eccezioni

In eccezioni Java, il cui elenco è presentato di seguito, sono utilizzati più spesso, quindi è necessario descrivere ciascuno di essi nel dettaglio:

  • ArithmeticException. Questi includono gli errori associati con le operazioni aritmetiche. L'esempio più eclatante – la divisione per zero.
  • ArrayIndexOutOfBoundsException – ricorso al numero di elemento di matrice che supera il totale della sua lunghezza.
  • ArrayStoreException – tentativo di assegnare un tipo di elemento incompatibile dell'array.
  • ClassCastException – un tentativo di portare il tipo sbagliato a un altro.
  • IllegalArgumentException – utilizzando l'argomento sbagliato nella chiamata di metodo.
  • NegativeArraySizeException – un'eccezione quando si crea un array di dimensione negativa.
  • NullPointerException – abuso di riferimenti a NULL.
  • NumberFormatException – si verifica quando una conversione stringa di sbagliato per intero.
  • UnsupportedOperationException – operazione non è supportata.

Questi esempi rappresentano i tipi di eccezioni Java non controllati. Ma in modo da guardare controllato:

  • ClassNotFoundException – Classe non trovata.
  • IllegalAcccessException – limitare l'accesso alla classe.
  • InterruptedException – interruzione del flusso.
  • NoSuchFieldException – non ci sono campo obbligatorio.

L'interpretazione delle eccezioni

Parlando di eccezioni frequentemente riscontrate Va notato che la loro interpretazione nella progettazione, può essere percepito in modo non corretto. Next è un breve elenco che spiega in modo più dettagliato, in cui ci può essere una situazione inaspettata.

NullPointerException. Il primo caso in cui v'è un'eccezione, è quello di ricorrere ad un riferimento a un oggetto che è uguale a null. Si estende anche allo zero metodi istanza classe. NullPointerException può essere gettata nel caso di ottenere una lunghezza array null uguali. Per evitare tali situazioni controllerà periodicamente siti sul nullo.

ArrayIndexOutOfBoundsException. Qualsiasi programma non può esistere senza l'uso di array. Di conseguenza, il ricorso frequente può generare ed errore. Eccezione si verifica quando uno sviluppatore cerca di accedere a un elemento di matrice che non è nella lista dell'indice. Ad esempio, il valore richiesto è superiore o inferiore lunghezza zero. Molto spesso è una conseguenza del fatto che nella matrice inizia con un punteggio pari a zero.

risultati

Gestione delle eccezioni Java – un potente ambiente di strumento, che facilita notevolmente il lavoro del programmatore e gli permette di creare un ambiente pulito e privo di errori di codice. Su richiesta funzionamento come regolare e stabile dipende dallo stato e la reputazione dello sviluppatore.

Naturalmente, in un programma di più o meno semplici per tracciare situazioni anomale molto più facile. Ma in grandi complessi automatizzati per poche centinaia di migliaia righe è possibile solo a seguito di test e debug a lungo termine.

Per Java errore di eccezione da cui nascono in alcune applicazioni, alcune aziende offrono una ricompensa quando trovano appassionati. Particolarmente apprezzato da quelli che causano una violazione del software di politica di sicurezza.