איך אני אומר לאדם שאינו טוב בתכנות, את ההבדל בין שגיאה לחריג?


תשובה 1:

כך דמיינתי את ההבדל בין שגיאה לחריג.

שגיאה:

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

אז דמיינו שאם תנסו לתפוס את הסלע הענק הזה (כלומר לטפל בשגיאה) אז זה יפגע בכם קשה!

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

יוצא מן הכלל:

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

עכשיו אתה יכול לנסות לתפוס את הסלע הקטן הזה או לעזוב.

אם תעזוב אז זה יפגע בך ואם תתפוס אז תציל את עצמך!

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

______________________________________________________

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

להשוואה :

  • ההבדל בין חריגה לעומת שגיאה ב- Java ההבדל בין שגיאה לעומת חריג בג'אווה - שאלת ראיון

תשובה 2:

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

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


תשובה 3:

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

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