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
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