logo

Java Captură mai multe excepții

Bloc Java Multi-catch

Un bloc try poate fi urmat de unul sau mai multe blocuri catch. Fiecare bloc catch trebuie să conțină un handler de excepții diferit. Deci, dacă trebuie să efectuați diferite sarcini la apariția diferitelor excepții, utilizați blocul multi-catch java.

Puncte de reținut

  • La un moment dat apare o singură excepție și la un moment dat este executat un singur bloc catch.
  • Toate blocurile de captură trebuie să fie ordonate de la cel mai specific la cel mai general, adică catch pentru ArithmeticException trebuie să vină înainte de catch pentru Exception.

Organigrama blocului multi-captură

Java Captură mai multe excepții

Exemplul 1

Să vedem un exemplu simplu de bloc java multi-catch.

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'); } } 
Testează-l acum

Ieșire:

format șir java
 Arithmetic Exception occurs rest of the code 

Exemplul 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'); } } 
Testează-l acum

Ieșire:

 ArrayIndexOutOfBounds Exception occurs rest of the code 

În acest exemplu, blocul try conține două excepții. Dar la un moment dat apare o singură excepție și este executat blocul său catch corespunzător.

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'); } } 
Testează-l acum

Ieșire:

 Arithmetic Exception occurs rest of the code 

Exemplul 4

În acest exemplu, generăm NullPointerException, dar nu am furnizat tipul de excepție corespunzător. În acest caz, blocul catch care conține clasa de excepție părinte Excepție va invocat.

MultipleCatchBlock4.java

mașină virtuală java
 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'); } } 
Testează-l acum

Ieșire:

 Parent Exception occurs rest of the code 

Exemplul 5

Să vedem un exemplu, pentru a gestiona excepția fără a menține ordinea excepțiilor (adică de la cel mai specific la cel mai general).

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...'); } } 
Testează-l acum

Ieșire:

 Compile-time error