logo

„Java Catch“ kelios išimtys

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

„Java Catch“ kelios išimtys

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