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