logo

Java fängt mehrere Ausnahmen ab

Java Multi-Catch-Block

Auf einen Try-Block können ein oder mehrere Catch-Blöcke folgen. Jeder Catch-Block muss einen anderen Ausnahmehandler enthalten. Wenn Sie also beim Auftreten unterschiedlicher Ausnahmen unterschiedliche Aufgaben ausführen müssen, verwenden Sie den Java-Multi-Catch-Block.

Punkte, die man sich merken sollte

  • Es tritt jeweils nur eine Ausnahme auf und es wird jeweils nur ein Catch-Block ausgeführt.
  • Alle Catch-Blöcke müssen vom spezifischsten zum allgemeinsten geordnet sein, d. h. „catch“ für „ArithmeticException“ muss vor „catch“ für „Exception“ stehen.

Flussdiagramm des Multi-Catch-Blocks

Java fängt mehrere Ausnahmen ab

Beispiel 1

Sehen wir uns ein einfaches Beispiel eines Java-Multi-Catch-Blocks an.

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'); } } 
Testen Sie es jetzt

Ausgabe:

Vergleiche String Java
 Arithmetic Exception occurs rest of the code 

Beispiel 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'); } } 
Testen Sie es jetzt

Ausgabe:

 ArrayIndexOutOfBounds Exception occurs rest of the code 

In diesem Beispiel enthält der Try-Block zwei Ausnahmen. Es tritt jedoch immer nur eine Ausnahme auf und der entsprechende Catch-Block wird ausgeführt.

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'); } } 
Testen Sie es jetzt

Ausgabe:

 Arithmetic Exception occurs rest of the code 

Beispiel 4

In diesem Beispiel generieren wir eine NullPointerException, haben aber nicht den entsprechenden Ausnahmetyp bereitgestellt. In diesem Fall der Catch-Block, der die übergeordnete Ausnahmeklasse enthält Ausnahme wird aufgerufen.

MultipleCatchBlock4.java

ls-Befehle unter Linux
 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'); } } 
Testen Sie es jetzt

Ausgabe:

 Parent Exception occurs rest of the code 

Beispiel 5

Sehen wir uns ein Beispiel an, um die Ausnahme zu behandeln, ohne die Reihenfolge der Ausnahmen beizubehalten (d. h. vom spezifischsten zum allgemeinsten).

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...'); } } 
Testen Sie es jetzt

Ausgabe:

 Compile-time error