עטיפה לעומת חריגות חוזרות ב- Java

1. סקירה כללית

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

במדריך זה נדון בשתי הדרכים הנפוצות ביותר להשליך מחדש את החריג.

2. השלכת יוצאים מהכלל מחדש

לפעמים לפני שנפיץ את החריג לרמה הגבוהה יותר, אולי נרצה לבצע כמה פעילויות. לדוגמה, ייתכן שנרצה להחזיר את עסקת DB לאחור, לרשום את החריג או לשלוח דוא"ל.

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

בואו נבין את המקרה שלנו עם דוגמא.

להלן אנו משליכים מחדש את אותו יוצא מן הכלל. בנוסף, אנו רושמים הודעת שגיאה ממש לפני שנשלח אותה:

שם מחרוזת = null; נסה {return name.equals ("ג'ו"); // גורם לתפוס NullPointerException} (Exception e) {// log throw e; }

המסוף יציג את ההודעה הבאה:

חריג בשרשור "ראשי" java.lang.NullPointerException ב- com.baeldung.exceptions.RethrowSameExceptionDemo.main (RethrowSameExceptionDemo.java:16)

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

3. חריגות עטיפה

עכשיו, בואו נסתכל על גישה אחרת.

במקרה זה, נעביר את אותו חריג כהפניה בבונה של חריג אחר:

שם מחרוזת = null; נסה {return name.equals ("ג'ו"); // גורם לתפיסת NullPointerException} (Exception e) {// log throw new IllegalArgumentException (e); }

הקונסולה תציג:

חריג בשרשור "הראשי" java.lang.IllegalArgumentException: java.lang.NullPointerException at com.baeldung.exceptions.RethrowDifferentExceptionDemo.main (RethrowDifferentExceptionDemo.java:24) נגרם על ידי: java.lang.NullPointerException. .main (RethrowDifferentExceptionDemo.java:18) 

הפעם אנו רואים את החריג המקורי וגם את העטיפה. בדרך זו, שֶׁלָנוּ IllegalArgumentException מופע עוטף את המקור NullPointerException כגורם. לפיכך אנו יכולים להציג את החריג הספציפי יותר במקום להציג את הגנרי.

4. מסקנה

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

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

כמו תמיד הפרויקט זמין ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found