בלוק Multi-catch של Java
בלוק ניסיון יכול להיות בעקבות בלוק תפיסה אחד או יותר. כל בלוק תופס חייב להכיל מטפל חריג אחר. לכן, אם אתה צריך לבצע משימות שונות בהתרחשות חריגים שונים, השתמש ב-java multi-catch block.
נקודות לזכור
- בכל פעם מתרחש רק חריג אחד ובכל פעם מבוצע רק בלוק תפוס אחד.
- יש להזמין את כל בלוקי ה-catch מהספציפי ביותר לכללי ביותר, כלומר ה-catch עבור ArithmeticException חייב לבוא לפני catch for Exception.
תרשים זרימה של Multi-catch Block
דוגמה 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