האם יתפס שגיאה על ידי בלוק תפוס בג'אווה?

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

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

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

2. תפיסת שגיאות

מאז java.lang. שגיאה בכיתה בג'אווה לא יורש מ java.lang. חריג, עלינו להכריז על שְׁגִיאָה מעמד בסיס - או הספציפי שְׁגִיאָה מחלקה משנה שהיינו רוצים לתפוס - בהצהרת התפיסה בכדי לתפוס אותה.

לכן, אם נפעיל את מקרה הבדיקה הבא, הוא יעבור:

@Test (צפוי = AssertionError.class) בטל פומבי כאשרError_thenIsNotCaughtByCatchException () {נסה {לזרוק AssertionError חדש (); } לתפוס (חריג ה) {Assert.fail (); // שגיאות לא נתפסות על ידי חריג לתפוס}}

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

@Test הציבור בטל כאשרError_thenIsCaughtByCatchError () {נסה {לזרוק AssertionError חדש (); } לתפוס (שגיאה ה) {// נתפס! -> תעודת מבחן}}

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

לכן, חייבת להיות לנו סיבה מאוד מאוד טובה לתפוס שגיאה!

3. מסקנה

במאמר זה ראינו מתי ואיך שְׁגִיאָהניתן לתפוס ג'אווה. את דוגמת הקוד ניתן למצוא בפרויקט GitHub.


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