Gestione delle eccezioni Java (con esempi)

Nel tutorial, impareremo i diversi approcci alla gestione delle eccezioni in Java con l'aiuto di esempi.

Nell'ultimo tutorial, abbiamo appreso delle eccezioni Java. Sappiamo che le eccezioni interrompono in modo anomalo l'esecuzione di un programma.

Questo è il motivo per cui è importante gestire le eccezioni. Ecco un elenco di diversi approcci per gestire le eccezioni in Java.

  • prova … cattura il blocco
  • finalmente bloccare
  • lancia e lancia la parola chiave

1. Java prova … cattura blocco

Il blocco try-catch viene utilizzato per gestire le eccezioni in Java. Ecco la sintassi del try… catchblocco:

 try ( // code ) catch(Exception e) ( // code )

Qui abbiamo inserito il codice che potrebbe generare un'eccezione all'interno del tryblocco. Ogni tryblocco è seguito da un catchblocco.

Quando si verifica un'eccezione, viene rilevata dal catchblocco. Il catchblocco non può essere utilizzato senza il tryblocco.

Esempio: gestione delle eccezioni utilizzando try… catch

 class Main ( public static void main(String() args) ( try ( // code that generate exception int divideByZero = 5 / 0; System.out.println("Rest of code in try block"); ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) ) )

Produzione

 ArithmeticException => / per zero

Nell'esempio, stiamo cercando di dividere un numero per 0. Qui, questo codice genera un'eccezione.

Per gestire l'eccezione, abbiamo inserito il codice, 5 / 0all'interno del tryblocco. Ora, quando si verifica un'eccezione, il resto del codice all'interno del tryblocco viene ignorato.

Il catchblocco cattura l'eccezione e le istruzioni all'interno del blocco catch vengono eseguite.

Se nessuna delle istruzioni nel tryblocco genera un'eccezione, il catchblocco viene saltato.

2. Java finalmente si blocca

In Java, il finallyblocco viene sempre eseguito indipendentemente dal fatto che ci sia o meno un'eccezione.

Il finallyblocco è facoltativo. E, per ogni tryblocco, può esserci un solo finallyblocco.

La sintassi di base del finallyblocco è:

 try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )

Se si verifica un'eccezione, il finallyblocco viene eseguito dopo il try… catchblocco. Altrimenti, viene eseguito dopo il blocco try. Per ogni tryblocco, può esserci un solo finallyblocco.

Esempio: gestione delle eccezioni Java utilizzando il blocco finale

 class Main ( public static void main(String() args) ( try ( // code that generates exception int divideByZero = 5 / 0; ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) finally ( System.out.println("This is the finally block"); ) ) )

Produzione

 ArithmeticException => / by zero Questo è il blocco finale

Nell'esempio sopra, stiamo dividendo un numero per 0 all'interno del tryblocco. Qui, questo codice genera un file ArithmeticException.

L'eccezione viene rilevata dal catchblocco. E poi il finallyblocco viene eseguito.

Nota : è buona norma utilizzare il finallyblocco. È perché può includere importanti codici di pulizia come,

  • codice che potrebbe essere saltato accidentalmente da return, continue o break
  • chiusura di un file o di una connessione

3. Java lancia e lancia la parola chiave

La throwparola chiave Java viene utilizzata per generare esplicitamente una singola eccezione.

Quando facciamo throwun'eccezione, il flusso del programma si sposta dal tryblocco al catchblocco.

Esempio: gestione delle eccezioni tramite lancio Java

 class Main ( public static void divideByZero() ( // throw an exception throw new ArithmeticException("Trying to divide by 0"); ) public static void main(String() args) ( divideByZero(); ) )

Produzione

 Eccezione nel thread "main" java.lang.ArithmeticException: tentativo di dividere per 0 in Main.divideByZero (Main.java:5) in Main.main (Main.java:9)

Nell'esempio precedente, lanciamo esplicitamente ArithmeticExceptionla throwparola chiave using .

Allo stesso modo, la throwsparola chiave viene utilizzata per dichiarare il tipo di eccezioni che potrebbero verificarsi all'interno del metodo. Viene utilizzato nella dichiarazione del metodo.

Esempio: Java lancia la parola chiave

 import java.io.*; class Main ( // declareing the type of exception public static void findFile() throws IOException ( // code that may generate IOException File newFile = new File("test.txt"); FileInputStream stream = new FileInputStream(newFile); ) public static void main(String() args) ( try ( findFile(); ) catch (IOException e) ( System.out.println(e); ) ) )

Produzione

 java.io.FileNotFoundException: test.txt (Il sistema non riesce a trovare il file specificato)

Quando eseguiamo questo programma, se il file test.txt non esiste, FileInputStreamlancia un FileNotFoundExceptionche estende la IOExceptionclasse.

Il findFile()metodo specifica che IOExceptionpuò essere lanciato un. Il main()metodo chiama questo metodo e gestisce l'eccezione se viene lanciata.

Se un metodo non gestisce le eccezioni, il tipo di eccezioni che possono verificarsi al suo interno deve essere specificato nella throwsclausola.

Per saperne di più, visita Java lancia e lancia.

Articoli interessanti...