logo

Java hvata više iznimaka

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

Java hvata više iznimaka

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