logo

Java rileva più eccezioni

Blocco multi-cattura Java

Un blocco try può essere seguito da uno o più blocchi catch. Ogni blocco catch deve contenere un gestore di eccezioni diverso. Pertanto, se è necessario eseguire attività diverse al verificarsi di eccezioni diverse, utilizzare il blocco multi-catch Java.

Punti da ricordare

  • Alla volta si verifica solo un'eccezione e alla volta viene eseguito solo un blocco catch.
  • Tutti i blocchi catch devono essere ordinati dal più specifico al più generale, ovvero catch per ArithmeticException deve precedere catch per Exception.

Diagramma di flusso del blocco multicattura

Java rileva più eccezioni

Esempio 1

Vediamo un semplice esempio di blocco multi-catch Java.

MultipleCatchBlock1.java

 public class MultipleCatchBlock1 { public static void main(String[] args) { try{ int a[]=new int[5]; a[5]=30/0; } catch(ArithmeticException e) { System.out.println('Arithmetic Exception occurs'); } catch(ArrayIndexOutOfBoundsException e) { System.out.println('ArrayIndexOutOfBounds Exception occurs'); } catch(Exception e) { System.out.println('Parent Exception occurs'); } System.out.println('rest of the code'); } } 
Provalo adesso

Produzione:

come disattivare la modalità sviluppatore su android
 Arithmetic Exception occurs rest of the code 

Esempio 2

MultipleCatchBlock2.java

 public class MultipleCatchBlock2 { public static void main(String[] args) { try{ int a[]=new int[5]; System.out.println(a[10]); } catch(ArithmeticException e) { System.out.println('Arithmetic Exception occurs'); } catch(ArrayIndexOutOfBoundsException e) { System.out.println('ArrayIndexOutOfBounds Exception occurs'); } catch(Exception e) { System.out.println('Parent Exception occurs'); } System.out.println('rest of the code'); } } 
Provalo adesso

Produzione:

 ArrayIndexOutOfBounds Exception occurs rest of the code 

In questo esempio, try block contiene due eccezioni. Ma alla volta si verifica solo un'eccezione e viene eseguito il blocco catch corrispondente.

MultipleCatchBlock3.java

 public class MultipleCatchBlock3 { public static void main(String[] args) { try{ int a[]=new int[5]; a[5]=30/0; System.out.println(a[10]); } catch(ArithmeticException e) { System.out.println('Arithmetic Exception occurs'); } catch(ArrayIndexOutOfBoundsException e) { System.out.println('ArrayIndexOutOfBounds Exception occurs'); } catch(Exception e) { System.out.println('Parent Exception occurs'); } System.out.println('rest of the code'); } } 
Provalo adesso

Produzione:

 Arithmetic Exception occurs rest of the code 

Esempio 4

In questo esempio, generiamo NullPointerException, ma non forniamo il tipo di eccezione corrispondente. In tal caso, il blocco catch contenente la classe di eccezione genitore Eccezione verrà invocato.

MultipleCatchBlock4.java

cosa sono i selettori nei css
 public class MultipleCatchBlock4 { public static void main(String[] args) { try{ String s=null; System.out.println(s.length()); } catch(ArithmeticException e) { System.out.println('Arithmetic Exception occurs'); } catch(ArrayIndexOutOfBoundsException e) { System.out.println('ArrayIndexOutOfBounds Exception occurs'); } catch(Exception e) { System.out.println('Parent Exception occurs'); } System.out.println('rest of the code'); } } 
Provalo adesso

Produzione:

 Parent Exception occurs rest of the code 

Esempio 5

Vediamo un esempio, per gestire l'eccezione senza mantenere l'ordine delle eccezioni (ovvero dalla più specifica alla più generale).

MultipleCatchBlock5.java

 class MultipleCatchBlock5{ public static void main(String args[]){ try{ int a[]=new int[5]; a[5]=30/0; } catch(Exception e){System.out.println('common task completed');} catch(ArithmeticException e){System.out.println('task1 is completed');} catch(ArrayIndexOutOfBoundsException e){System.out.println('task 2 completed');} System.out.println('rest of the code...'); } } 
Provalo adesso

Produzione:

 Compile-time error