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