ההבדל בין חריגה שנבדקו ו חריגה Runtime

Anonim

חריגה מסומנת לעומת חריגה Runtime

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

-> ->

מהו חריג שנבדק?

חריגים שנבדקו הם אובייקטים של המחלקה Java. לאנג. (למעט ג 'אווה lang. RuntimeException ו subclasses שלה). חריגים שנבדקו הם "מסומנת" בזמן ההידור. כלומר, המתכנת חייב לתפוס או לזרוק את החריגים האלה, אחרת הידור יתלונן (יגרום לשגיאת מהדר). מסיבה זו, חריגים רבים בדק ידועים מאוד למתכנתים. לדוגמה, IOException ואת כיתות המשנה שלה נבדקים חריגים, ובכל פעם המתכנת הוא מתמודד עם גישה או שינוי של הקובץ, מהדר בדיקות כדי לוודא כי כל IOExceptions אפשרי מטופלים על ידי המתכנת.

-> ->

מהו חריגה Runtime?

יוצאים מן הכלל Runtime מורכב של ג 'אווה. לאנג. RuntimeException וכל כיתות המשנה שלה. תיאורטית, הם משרתים את אותה מטרה כמו חריגים שנבדקו, וניתן לזרוק או לטפל בהם כמו בדק למעט, אבל הטיפול בהם אינו נאכף על ידי המהדר. לכן, חריגים Runtime שייכים למשפחה של חריגים לא בדוק. NullPointerException, NumberFormatEception, ClassCastException ו- ArrayIndexOutOfBoundsException הם חריגים של זמן ריצה נפוץ ב- Java.

-> ->

מה ההבדל בין חריגה מסומנת חריגה Runtime?

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

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