logo

Java fange flere undtagelser

Java Multi-catch blok

En prøveblok kan efterfølges af en eller flere catch-blokke. Hver catch-blok skal indeholde en anden undtagelsesbehandler. Så hvis du skal udføre forskellige opgaver ved forekomsten af ​​forskellige undtagelser, skal du bruge java multi-catch blok.

Punkter at huske

  • Ad gangen forekommer kun én undtagelse, og ad gangen udføres kun én catch-blok.
  • Alle catch-blokke skal bestilles fra mest specifikke til mest generelle, dvs. catch for ArithmeticException skal komme før catch for Exception.

Flowchart over Multi-catch Block

Java fange flere undtagelser

Eksempel 1

Lad os se et simpelt eksempel på java multi-catch blok.

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'); } } 
Test det nu

Produktion:

mylivecricket alternativ
 Arithmetic Exception occurs rest of the code 

Eksempel 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'); } } 
Test det nu

Produktion:

 ArrayIndexOutOfBounds Exception occurs rest of the code 

I dette eksempel indeholder try-blokken to undtagelser. Men ad gangen forekommer kun én undtagelse, og dens tilsvarende catch-blok udføres.

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'); } } 
Test det nu

Produktion:

 Arithmetic Exception occurs rest of the code 

Eksempel 4

I dette eksempel genererer vi NullPointerException, men leverede ikke den tilsvarende undtagelsestype. I et sådant tilfælde, catch-blokken, der indeholder den overordnede undtagelsesklasse Undtagelse vil påberåbes.

MultipleCatchBlock4.java

sorteret tuple python
 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'); } } 
Test det nu

Produktion:

 Parent Exception occurs rest of the code 

Eksempel 5

Lad os se et eksempel, for at håndtere undtagelsen uden at opretholde rækkefølgen af ​​undtagelser (dvs. fra det mest specifikke til det mest generelle).

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...'); } } 
Test det nu

Produktion:

 Compile-time error