logo

Java תפוס חריגים מרובים

בלוק Multi-catch של Java

בלוק ניסיון יכול להיות בעקבות בלוק תפיסה אחד או יותר. כל בלוק תופס חייב להכיל מטפל חריג אחר. לכן, אם אתה צריך לבצע משימות שונות בהתרחשות חריגים שונים, השתמש ב-java multi-catch block.

נקודות לזכור

  • בכל פעם מתרחש רק חריג אחד ובכל פעם מבוצע רק בלוק תפוס אחד.
  • יש להזמין את כל בלוקי ה-catch מהספציפי ביותר לכללי ביותר, כלומר ה-catch עבור ArithmeticException חייב לבוא לפני catch for Exception.

תרשים זרימה של Multi-catch Block

Java תפוס חריגים מרובים

דוגמה 1

בואו נראה דוגמה פשוטה של ​​בלוק רב-תפוס של Java.

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'); } } 
בדוק את זה עכשיו

תְפוּקָה:

מודולי קפיץ
 Arithmetic Exception occurs rest of the code 

דוגמה 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'); } } 
בדוק את זה עכשיו

תְפוּקָה:

 ArrayIndexOutOfBounds Exception occurs rest of the code 

בדוגמה זו, בלוק try מכיל שני חריגים. אבל בכל פעם מתרחש רק חריג אחד ובלוק ה-catch המתאים שלו מבוצע.

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'); } } 
בדוק את זה עכשיו

תְפוּקָה:

 Arithmetic Exception occurs rest of the code 

דוגמה 4

בדוגמה זו, אנו יוצרים NullPointerException, אך לא סיפקנו את סוג החריגה המתאים. במקרה כזה, בלוק ה-catch המכיל את מחלקת החריגות האב יוצא מן הכלל יופעל.

MultipleCatchBlock4.java

סוגי התייחסות ל-java
 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

בואו נראה דוגמה, לטפל בחריג מבלי לשמור על סדר החריגים (כלומר מהספציפי ביותר לכללי ביותר).

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...'); } } 
בדוק את זה עכשיו

תְפוּקָה:

 Compile-time error