חריגים מסומנים ולא מסומנים ב- Java

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

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

2. חריגים מסומנים

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

Java מאמתת חריגים מסומנים בזמן הידור.

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

ריק סטטי פרטי בדוקExceptionWithThrows () זורק FileNotFoundException {File file = קובץ חדש ("not_existing_file.txt"); זרם FileInputStream = FileInputStream חדש (קובץ); }

אנו יכולים גם להשתמש ב- נסה לתפוס חסום לטיפול בחריג מסומן:

ריק סטטי פרטי בדוקExceptionWithTryCatch () {File file = קובץ חדש ("not_existing_file.txt"); נסה {FileInputStream stream = FileInputStream חדש (קובץ); } לתפוס (FileNotFoundException e) {e.printStackTrace (); }}

כמה חריגים מסומנים נפוצים ב- Java הם IOException, SQLException, ו ParseException.

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

מחלקה ציבורית IncorrectFileNameException מרחיב חריג {public IncorrectFileNameException (מחרוזת errorMessage) {super (errorMessage); }} 

3. חריגים לא מסומנים

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

חלל סטטי פרטי divideByZero () {int numerator = 1; מכנה int = 0; תוצאת int = מניין / מכנה; } 

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

כמה יוצאים מן הכלל הנפוצים ב- Java הם NullPointerException, אינדקס מערך מחוץ לתחום Exception, ו IllegalArgumentException.

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

מחלקה ציבורית NullOrEmptyException מרחיבה RuntimeException {public NullOrEmptyException (String errorMessage) {super (errorMessage); }}

4. מתי להשתמש בחריגים מסומנים ובחריגים לא מסומנים

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

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

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

if (! isCorrectFileName (fileName)) {throw new IncorrectFileNameException ("שם קובץ שגוי:" + fileName); } 

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

אם (fileName == null || fileName.isEmpty ()) {זרוק NullOrEmptyException חדש ("שם הקובץ הוא ריק או ריק."); } 

5. מסקנה

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

כמו תמיד, כל הקוד שנמצא במאמר זה ניתן למצוא באתר GitHub.