logo

Java Catch vairāki izņēmumi

Java Multi-catch bloks

Mēģināšanas blokam var sekot viens vai vairāki noķeršanas bloki. Katrā nozvejas blokā ir jāietver atšķirīgs izņēmumu apstrādātājs. Tātad, ja jums ir jāveic dažādi uzdevumi dažādu izņēmumu gadījumā, izmantojiet Java multi-catch bloku.

Punkti, kas jāatceras

  • Vienlaicīgi notiek tikai viens izņēmums, un vienlaikus tiek izpildīts tikai viens uztveršanas bloks.
  • Visi nozvejas bloki ir jāsakārto no visspecifiskākā līdz vispārīgākajam, t.i., Aritmētiskā izņēmuma nozvejai ir jābūt pirms izņēmuma nozvejas.

Vairāku nozveju bloka blokshēma

Java Catch vairāki izņēmumi

1. piemērs

Apskatīsim vienkāršu Java multi-catch bloka piemēru.

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'); } } 
Izmēģiniet to tūlīt

Izvade:

noņemiet pirmo rakstzīmi programmā Excel
 Arithmetic Exception occurs rest of the code 

2. piemērs

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'); } } 
Izmēģiniet to tūlīt

Izvade:

 ArrayIndexOutOfBounds Exception occurs rest of the code 

Šajā piemērā mēģinājuma blokā ir divi izņēmumi. Taču vienlaikus notiek tikai viens izņēmums un tiek izpildīts tam atbilstošais nozvejas bloks.

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'); } } 
Izmēģiniet to tūlīt

Izvade:

 Arithmetic Exception occurs rest of the code 

4. piemērs

Šajā piemērā mēs ģenerējam NullPointerException, bet nenorādījām atbilstošo izņēmuma veidu. Šādā gadījumā nozvejas bloks, kas satur vecāku izņēmuma klasi Izņēmums tiks piesaukts.

MultipleCatchBlock4.java

kā uzzināt displeja izmēru
 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'); } } 
Izmēģiniet to tūlīt

Izvade:

 Parent Exception occurs rest of the code 

5. piemērs

Apskatīsim piemēru, kā rīkoties ar izņēmumu, nesaglabājot izņēmumu secību (t.i., no visspecifiskākā uz vispārīgāko).

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...'); } } 
Izmēģiniet to tūlīt

Izvade:

 Compile-time error