logo

Јава ухвати више изузетака

Јава Мулти-цатцх блок

Блок покушаја може бити праћен једним или више цатцх блокова. Сваки цатцх блок мора да садржи другачији руковалац изузетком. Дакле, ако морате да обављате различите задатке када се појаве различити изузеци, користите јава мулти-цатцх блок.

Тачке које треба запамтити

  • У исто време се јавља само један изузетак и истовремено се извршава само један блок цатцх.
  • Сви блокови цатцх морају бити поређани од најспецифичнијег до најопштијег, тј. цатцх за АритхметицЕкцептион мора бити пре цатцх за изузетак.

Дијаграм тока вишеструког хватања блока

Јава ухвати више изузетака

Пример 1

Хајде да видимо једноставан пример Јава мулти-цатцх блока.

МултиплеЦатцхБлоцк1.јава

 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'); } } 
Тестирајте одмах

Излаз:

како читати из цсв датотеке у јава
 Arithmetic Exception occurs rest of the code 

Пример 2

МултиплеЦатцхБлоцк2.јава

 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'); } } 
Тестирајте одмах

Излаз:

 ArrayIndexOutOfBounds Exception occurs rest of the code 

У овом примеру, блок три садржи два изузетка. Али у том тренутку се јавља само један изузетак и његов одговарајући блок за хватање се извршава.

МултиплеЦатцхБлоцк3.јава

 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'); } } 
Тестирајте одмах

Излаз:

 Arithmetic Exception occurs rest of the code 

Пример 4

У овом примеру генеришемо НуллПоинтерЕкцептион, али нисмо обезбедили одговарајући тип изузетка. У том случају, блок цатцх који садржи родитељску класу изузетака Изузетак призвана воља.

МултиплеЦатцхБлоцк4.јава

лс команде линук
 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'); } } 
Тестирајте одмах

Излаз:

 Parent Exception occurs rest of the code 

Пример 5

Хајде да видимо пример, да обрадимо изузетак без одржавања редоследа изузетака (тј. од најспецифичнијег до најопштијег).

МултиплеЦатцхБлоцк5.јава

 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...'); } } 
Тестирајте одмах

Излаз:

 Compile-time error