Qual è la differenza tra lancio vs. lancia in Java

Pubblicato: 2013-07-23

Qual è la differenza tra lancio vs. lancia in Java

Uno lo dichiara e l'altro lo fa

Ci sono cinque parole chiave relative alla gestione delle eccezioni in Java, ad esempio try, catch, finalmente, throw e throws . A parte la differenza tra final, finalize e finalize , throw vs throws è una delle domande frequenti dell'intervista Java.

  • La parola chiave throw viene utilizzata per lanciare Exception da qualsiasi metodo o blocco statico in Java mentre la parola chiave throws , utilizzata nella dichiarazione del metodo, indica quale Exception può essere generata da questo metodo. Non sono intercambiabili.
  • Se un metodo genera un'eccezione verificata come mostrato nell'esempio seguente, il chiamante può gestire questa eccezione catturandola o rilanciarla dichiarando un'altra clausola throws nella dichiarazione del metodo.
  • La clausola Throw può essere utilizzata in qualsiasi parte del codice in cui si ritiene che debba essere generata un'eccezione specifica al metodo chiamante.

Comprendere le eccezioni Java:

Se un metodo sta generando un'eccezione, dovrebbe essere circondato da un blocco try catch per catturarlo o quel metodo dovrebbe avere la clausola throws nella sua firma. Senza la clausola throws nella firma, il compilatore JVM Java non sa cosa fare con l'eccezione. La clausola throws dice al compilatore che questa particolare eccezione verrebbe gestita dal metodo chiamante.

Di seguito è riportato un esempio molto semplice che spiega il comportamento di Throw, Throws, Try, Catch, Infine block in Java.

Risultato:

Eccezione puntatore nullo - Crunchify

Ora sostituisci semplicemente la riga 45 e 46 con la riga sottostante per vedere il risultato seguente:

Nuovo risultato:

Elenco di tutti i tutorial Java che potrebbero interessarti.

Suggerimenti bonus sulle eccezioni:

  • L'esecuzione normale del programma viene immediatamente ramificata quando viene generata un'eccezione.
  • Le eccezioni controllate devono essere catturate o inoltrate. Questo può essere fatto in un'istruzione try... catch o definendo l'eccezione nella definizione del metodo.
  • L'eccezione viene rilevata dal primo blocco catch la cui classe di eccezione associata corrisponde alla classe o a una superclasse dell'eccezione generata.
  • Se non viene trovato alcun blocco catch corrispondente nella catena di eccezioni, il thread contenente l'eccezione generata viene terminato.
  • Il blocco finally dopo un'istruzione try... catch viene eseguita indipendentemente dal fatto che un'eccezione venga rilevata o meno.
  • Il ritorno all'interno di un blocco finally interrompe la catena di eccezioni all'invocatore anche per eccezioni non rilevate.