חריגים משורשרים בג'אווה

חריגים משורשרים בג'אווה

חריגים משורשרים ב-Java מאפשרים לשייך חריג אחד לאחר, כלומר חריג אחד מתאר את הסיבה לחריגה אחרת.

  • למשל, לשקול מצב שבו שיטה זורקת ArithmeticException בגלל ניסיון לחלק באפס.
  • אבל הסיבה העיקרית לשגיאה הייתה כשל ב-I/O שגרם למחלק להיות אפס.
  • במקרים כאלה חריגים משורשרים עוזרים להפיץ הן את הגורמים העיקריים והן הבסיסיים לשגיאה.

דוּגמָה : הדוגמה הבאה מדגימה כיצד להשתמש בחריגים משורשרים ב-Java.

Java
   // Working of chained exceptions   public     class   Geeks     {      public     static     void     main  (  String  []     args  )     {      try     {          // Creating an exception      NumberFormatException     ex     =     new     NumberFormatException  (  'Primary Exception'  );      // Setting the cause of the exception      ex  .  initCause  (  new     NullPointerException  (  'Root cause of the exception'  ));      // Throwing the exception with a cause      throw     ex  ;      }         catch     (  NumberFormatException     ex  )     {          // Displaying the primary exception      System  .  out  .  println  (  'Caught Exception: '     +     ex  );      // Displaying the root cause of the exception      System  .  out  .  println  (  'Cause of Exception: '     +     ex  .  getCause  ());      }      }   }   

תְפוּקָה
Caught Exception: java.lang.NumberFormatException: Primary Exception Cause of Exception: java.lang.NullPointerException: Root cause of the exception  

פֶּתֶק: חריגים משורשרים הידועים גם כחריגים מקוננים מאפשרים לנו לשייך סיבה לחריגה ב-Java. זה שימושי כאשר אנו רוצים להפיץ מידע על הסיבה המקורית לחריגה.

בונים

  • ניתן לזרוק (גורם לזרוק) : כאשר סיבה היא החריג שגורם לחריג הנוכחי.
  • ניתנת לזריקה (מסיבת מחרוזת ניתנת לזריקה) : כאשר msg היא הודעת החריגה והגורם הוא החריג שגורם לחריג הנוכחי.

שיטות לזרוק חריגים משורשרים

  1. getCause() : שיטה זו מחזירה את הסיבה האמיתית לחריגה.
  2. initCause (גורם שניתן לזרוק) : שיטה זו מגדירה את הסיבה לחריג הקורא.

דוּגמָה: שימוש בהודעה מותאמת אישית עם חריגים משורשרים

בג'אווה אנו יכולים לשרשר חריגים באמצעות הבנאי של המחלקה Throwable.

Java
   // Use a custom message with chained exception   public     class   Geeks     {      public     static     void     main  (  String  []     args  )     {      try     {          // Code that might throw an exception      int  []     n     =     new     int  [  5  ]  ;      int     divisor     =     0  ;      for     (  int     i     =     0  ;     i      <     n  .  length  ;     i  ++  )     {      int     res     =     n  [  i  ]     /     divisor  ;      System  .  out  .  println  (  res  );      }      }         catch     (  ArithmeticException     e  )     {          // Creating a new exception with       // the original as the cause      throw     new     RuntimeException      (  'Error: Division by zero occurred'       e  );      }      }   }   

תְפוּקָה:

תְפוּקָה

הֶסבֵּר: בדוגמה זו מערך של מספרים שלמים ומגדיר את המחלק ל-0.

  • בתוך הבלוק try הוא מנסה לחלק כל אלמנט של המערך ב-0 מה שזורק ArithmeticException.
  • ArithmeticException זה נתפס בבלוק ה-catch שבו נוצר RuntimeException חדש עם החריג המקורי כלומר ArithmeticException כגורם שלו.
  • מכיוון שלא נתפס ה-RuntimeException שמציג את מעקב המחסנית כולל ה-RuntimeException וה-ArithmeticException.

היתרונות של חריגים משורשרים:

היתרונות של חריגים משורשרים מפורטים להלן:

  • חריג זה מסייע באיתור באגים על ידי מתן פרטים על הסיבות העיקריות והשורשיות כאחד.
  • זה מפשט את הטיפול בשגיאות על ידי הפעלת ההפצה של הקשר חריג שלם.
  • זה משפר את המעקב אחר שגיאות ביישומים מורכבים.

החסרונות של חריגים משורשרים:

  • אם לא משתמשים בו כראוי זה יכול להפוך את מעקב הערימה ארוך יותר וקשה יותר לקריאה.
  • שימוש יתר עלול לגרום להודעות שגיאה מבלבלות אם חריגים משורשרים שלא לצורך.
  • על המפתחים להבטיח קשר בין סיבות משמעותיות; אחרת זה יכול להטעות במהלך איתור באגים.
חידון מוצע חידון ערוך 3 שאלות

מהי המטרה העיקרית של חריגים משורשרים בג'אווה?

  • א

    כדי להסתיר את הסיבה העיקרית לחריגה

  • ב

    לשייך חריג אחד לאחר

  • ג

    כדי לשפר את ביצועי הקוד

  • ד

    לתיקון אוטומטי של שגיאות בזמן ריצה

הֶסבֵּר:

חריגים משורשרים מאפשרים קישור חריג אחד למשנהו כדי להראות את הסיבה השורשית.

באיזו שיטה משתמשים כדי לקבוע את הסיבה לחריגה?

  • א

    getMessage()

  • ב

    setException()

  • ג

    initCause()

  • ד

    initCause()

הֶסבֵּר:

השיטה initCause() מגדירה את הסיבה הבסיסית לחריגה.

בדוגמה איזה סוג חריג מוגדר כגורם ל- NumberFormatException?

  • א

    IOException

  • ב

    ArithmeticException

  • ג

    NullPointerException

  • ד

    RuntimeException

הֶסבֵּר:

הדוגמה מגדירה NullPointerException כגורם ל- NumberFormatException.

חריגים משורשרים בגהחידון הסתיים בהצלחה הציון שלך:   2 /3 דיוק:  0% התחבר כדי להציג הסבר 1 /3 1 /3 < Previous הבא >