Java Multi-catch blokas
Po bandymo bloko gali sekti vienas ar daugiau gaudymo blokų. Kiekviename sugavimo bloke turi būti skirtinga išimčių tvarkytuvė. Taigi, jei turite atlikti skirtingas užduotis, kai atsiranda skirtingos išimtys, naudokite „Java multi-catch“ bloką.
Taškai, kuriuos reikia prisiminti
- Vienu metu įvyksta tik viena išimtis ir vienu metu vykdomas tik vienas gaudymo blokas.
- Visi gaudymo blokai turi būti suskirstyti nuo konkretaus iki bendriausio, t. y. Aritmetinės išimties sugavimas turi būti pateiktas prieš gaudymą išimties atveju.
Kelių gaudyklių bloko schema
1 pavyzdys
Pažiūrėkime paprastą „Java multi-catch“ bloko pavyzdį.
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'); } }Išbandykite dabar
Išvestis:
atnaujinama java
Arithmetic Exception occurs rest of the code
2 pavyzdys
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'); } }Išbandykite dabar
Išvestis:
ArrayIndexOutOfBounds Exception occurs rest of the code
Šiame pavyzdyje pabandykite bloke yra dvi išimtys. Tačiau vienu metu įvyksta tik viena išimtis ir vykdomas atitinkamas gaudymo blokas.
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'); } }Išbandykite dabar
Išvestis:
Arithmetic Exception occurs rest of the code
4 pavyzdys
Šiame pavyzdyje mes generuojame NullPointerException, bet nepateikėme atitinkamo išimties tipo. Tokiu atveju gaudymo blokas, kuriame yra pirminės išimties klasė Išimtis bus iškviestas.
MultipleCatchBlock4.java
atidaryti nustatymų meniu
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'); } }Išbandykite dabar
Išvestis:
Parent Exception occurs rest of the code
5 pavyzdys
Pažiūrėkime pavyzdį, kaip tvarkyti išimtį neišlaikant išimčių tvarkos (t. y. nuo konkretiausios iki bendriausios).
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...'); } }Išbandykite dabar
Išvestis:
Compile-time error