Java Multi-catch blok
Nakon bloka try može uslijediti jedan ili više blokova catch. Svaki catch blok mora sadržavati drugačiji rukovatelj iznimkama. Dakle, ako morate izvršiti različite zadatke pri pojavi različitih iznimaka, koristite java multi-catch blok.
Bodovi za pamćenje
- Odjednom se pojavljuje samo jedna iznimka i istovremeno se izvršava samo jedan catch blok.
- Svi blokovi catch moraju biti poredani od najspecifičnijih do najopćenitijih, tj. catch za ArithmeticException mora doći prije catch for Exception.
Dijagram toka višestrukog bloka
Primjer 1
Pogledajmo jednostavan primjer java multi-catch bloka.
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'); } }Testirajte sada
Izlaz:
format java niza
Arithmetic Exception occurs rest of the code
Primjer 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'); } }Testirajte sada
Izlaz:
ArrayIndexOutOfBounds Exception occurs rest of the code
U ovom primjeru, try block sadrži dvije iznimke. Ali odjednom se dogodi samo jedan izuzetak i izvršava se njegov odgovarajući catch blok.
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'); } }Testirajte sada
Izlaz:
Arithmetic Exception occurs rest of the code
Primjer 4
U ovom primjeru generiramo NullPointerException, ali nismo naveli odgovarajuću vrstu iznimke. U tom slučaju, blok catch koji sadrži nadređenu klasu iznimke Iznimka volja prizvana.
MultipleCatchBlock4.java
struktura podataka
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'); } }Testirajte sada
Izlaz:
Parent Exception occurs rest of the code
Primjer 5
Pogledajmo primjer za rukovanje iznimkama bez održavanja redoslijeda iznimaka (tj. od najspecifičnijih do najopćenitijih).
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...'); } }Testirajte sada
Izlaz:
Compile-time error