logo

Java Catch több kivétel

Java Multi-catch blokk

A try blokkot egy vagy több fogási blokk követheti. Minden fogási blokknak más kivételkezelőt kell tartalmaznia. Tehát, ha különböző feladatokat kell végrehajtania különböző kivételek előfordulásakor, használja a java multi-catch blokkot.

Emlékezendő pontok

  • Egyszerre csak egy kivétel történik, és egyszerre csak egy fogási blokk kerül végrehajtásra.
  • Az összes fogási blokkot a legspecifikusabbtól a legáltalánosabbig kell rendezni, azaz az Aritmetikai kivételhez tartozó fogásnak a kivételhez tartozó fogás előtt kell lennie.

Többfogásos blokk folyamatábrája

Java Catch több kivétel

1. példa

Nézzünk egy egyszerű példát a java multi-catch blokkra.

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'); } } 
Tesztelje most

Kimenet:

véletlenszerű sorrend sql-ben
 Arithmetic Exception occurs rest of the code 

2. példa

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'); } } 
Tesztelje most

Kimenet:

 ArrayIndexOutOfBounds Exception occurs rest of the code 

Ebben a példában a try blokk két kivételt tartalmaz. Egyszerre azonban csak egy kivétel történik, és a megfelelő fogási blokk kerül végrehajtásra.

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'); } } 
Tesztelje most

Kimenet:

 Arithmetic Exception occurs rest of the code 

4. példa

Ebben a példában létrehoztuk a NullPointerException kivételt, de nem adtuk meg a megfelelő kivételtípust. Ilyen esetben a szülő kivételosztályt tartalmazó catch blokk Kivétel akaratot hívják meg.

MultipleCatchBlock4.java

bash húr hossza
 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'); } } 
Tesztelje most

Kimenet:

 Parent Exception occurs rest of the code 

5. példa

Lássunk egy példát a kivétel kezelésére a kivételek sorrendjének fenntartása nélkül (azaz a legspecifikusabbtól a legáltalánosabbig).

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...'); } } 
Tesztelje most

Kimenet:

 Compile-time error