Java/בדיקת שגיאות

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי



שקלו לדלג על נושא זה

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



בדיקת שגיאות (או troubleshooting) היא דרך להתגבר ולמנוע שגיאות בתוכנית.

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


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

ישנם שני סוגי נפילות אפשריות:
Error - בדרך כלל גורם לנפילת התוכנית.
Exception - בדרך כלל שגיאה קלה שהתוכנית מסוגלת להמשיך לרוץ, אך רק אם היא נתפסת.

חריגים (Exceptions)[עריכה]

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

מה זה חריג?[עריכה]

חריג (או exceptions) הוא אירוע המתרחש במהלך הביצוע של תכנית שמפריעה לזרימה התקינה של הוראות.

כאשר מתרחשת שגיאה בשיטה, השיטה יוצרת אובייקט ומעבירה אותו למערכת זמן הריצה (runtime system). האובייקט, הנקרא אובייקט חריג (exception object), מכיל מידע אודות השגיאה, איזה סוג של שגיאה ואת מצב התכנית כאשר אירעה השגיאה. יצירתו של אובייקט חריג ומסירתו למערכת זמן הריצה נקראת לזרוק חריג (throwing an exception).

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


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

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


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

עוד על חריגים[עריכה]

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


הפרק הקודם:
רקורסיה
בדיקת שגיאות הפרק הבא:
סיכום ותרגילים