logo

Java Catch meerdere uitzonderingen

Java Multi-catch-blok

Een try-blok kan worden gevolgd door een of meer catch-blokken. Elk catch-blok moet een andere uitzonderingshandler bevatten. Dus als u verschillende taken moet uitvoeren bij het optreden van verschillende uitzonderingen, gebruik dan Java Multi-Catch Block.

Punten om te onthouden

  • Er treedt slechts één uitzondering tegelijk op en er wordt slechts één catch-blok uitgevoerd.
  • Alle catch-blokken moeten worden geordend van meest specifiek naar meest algemeen, d.w.z. catch voor ArithmeticException moet vóór catch voor Exception komen.

Stroomdiagram van Multi-catch-blok

Java Catch meerdere uitzonderingen

voorbeeld 1

Laten we een eenvoudig voorbeeld bekijken van een 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 het nu

Uitgang:

Java-arraylist-methoden
 Arithmetic Exception occurs rest of the code 

Voorbeeld 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 het nu

Uitgang:

 ArrayIndexOutOfBounds Exception occurs rest of the code 

In dit voorbeeld bevat try-blok twee uitzonderingen. Maar tegelijkertijd treedt er slechts één uitzondering op en wordt het bijbehorende catch-blok uitgevoerd.

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

Uitgang:

 Arithmetic Exception occurs rest of the code 

Voorbeeld 4

In dit voorbeeld genereren we NullPointerException, maar hebben we niet het bijbehorende uitzonderingstype opgegeven. In dat geval is het catch-blok dat de bovenliggende uitzonderingsklasse bevat Uitzondering zal een beroep doen.

MultipleCatchBlock4.java

hoe je een string naar een geheel getal converteert in Java
 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 het nu

Uitgang:

 Parent Exception occurs rest of the code 

Voorbeeld 5

Laten we een voorbeeld bekijken om de uitzondering af te handelen zonder de volgorde van de uitzonderingen te behouden (dat wil zeggen van meest specifiek naar meest algemeen).

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

Uitgang:

 Compile-time error