הבדל בין חריגה לשגיאה

הבדל בין חריגה לשגיאה
הבדל בין חריגה לשגיאה

וִידֵאוֹ: הבדל בין חריגה לשגיאה

וִידֵאוֹ: הבדל בין חריגה לשגיאה
וִידֵאוֹ: Introduction to NAT and PAT 2024, נוֹבֶמבֶּר
Anonim

חריגה לעומת שגיאה

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

מהו חריג?

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

מהי שגיאה?

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

מה ההבדל בין חריגה לשגיאה?

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

מוּמלָץ: