logo

Java Catch Multiple Exceptions

Java Multi-catch blok

Po bloku try môže nasledovať jeden alebo viac blokov catch. Každý blok catch musí obsahovať inú obsluhu výnimky. Takže, ak musíte vykonávať rôzne úlohy pri výskyte rôznych výnimiek, použite java multi-catch block.

Body na zapamätanie

  • V určitom čase sa vyskytne iba jedna výnimka a súčasne sa vykoná len jeden blok catch.
  • Všetky bloky úlovkov musia byť zoradené od najšpecifickejších po najvšeobecnejšie, t. j. úlovok pre aritmetickú výnimku musí predchádzať úlovok pre výnimku.

Vývojový diagram bloku s viacerými záchytmi

Java Catch Multiple Exceptions

Príklad 1

Pozrime sa na jednoduchý príklad java multi-catch bloku.

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'); } } 
Vyskúšajte to

Výkon:

jarná architektúra topánok
 Arithmetic Exception occurs rest of the code 

Príklad 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'); } } 
Vyskúšajte to

Výkon:

 ArrayIndexOutOfBounds Exception occurs rest of the code 

V tomto príklade obsahuje blok try dve výnimky. Ale naraz sa vyskytne iba jedna výnimka a vykoná sa jej zodpovedajúci blok catch.

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'); } } 
Vyskúšajte to

Výkon:

 Arithmetic Exception occurs rest of the code 

Príklad 4

V tomto príklade vygenerujeme NullPointerException, ale neposkytneme zodpovedajúci typ výnimky. V takom prípade blok catch obsahujúci triedu rodičovskej výnimky Výnimka vôľa vyvolaná.

MultipleCatchBlock4.java

semená vs spóry
 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'); } } 
Vyskúšajte to

Výkon:

 Parent Exception occurs rest of the code 

Príklad 5

Pozrime sa na príklad, ako zvládnuť výnimku bez zachovania poradia výnimiek (t. j. od najšpecifickejšej po najvšeobecnejšiu).

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...'); } } 
Vyskúšajte to

Výkon:

 Compile-time error