methadonepretty
New member
מימוש של Exception Handling
יו, יצא לי לתהות הרבה לאחרונה איך ממומש ברמת שפת המכונה רעיון תפיסת השגיאות שקיים בהרבה שפות. נלך על דוגמה ב-VB הידועה לשמצה, רק בגלל רמת הבטיחות הגבוהה בה. נגיד שיש לי בתוך סאב שני משתני double, ואני מבצע פעולת חילוק ביניהם. מהפעולה הזו יכולות לעלות לפחות שתי שגיאות ש-VB יודעת לתפוס: חלוקה באפס ו-Overflow (במקרה שהמחלק קטן מספיק והמחולק גדול מספיק):
יו, יצא לי לתהות הרבה לאחרונה איך ממומש ברמת שפת המכונה רעיון תפיסת השגיאות שקיים בהרבה שפות. נלך על דוגמה ב-VB הידועה לשמצה, רק בגלל רמת הבטיחות הגבוהה בה. נגיד שיש לי בתוך סאב שני משתני double, ואני מבצע פעולת חילוק ביניהם. מהפעולה הזו יכולות לעלות לפחות שתי שגיאות ש-VB יודעת לתפוס: חלוקה באפס ו-Overflow (במקרה שהמחלק קטן מספיק והמחולק גדול מספיק):
Public Sub Bleh() On Error Goto MyErrorHandler Dim a As Double Dim b As Double Dim c As Double a = ערך מסוים b = ערך מסוים c = a / b MyErrorHandler: טיפול בשגיאה End Sub
קוד נקי. אז מה באמת קורה כשהשגרה הזו מתורגמת לקוד מכונה? איפה מתבטא החלק שתופס שגיאות? האם איפה שביצענו פעולת חילוק קוד המכונה יהיה רצוף המון המון בדיקות וזריקות (CMP ו-JMPים למיניהם) שיתנו מענה לכל השגיאות שיכולות לצוץ, או שיש דרך יותר מתוחכמת לממש מנגנוני תפיסת שגיאות (מה שנראה לי יותר סביר)? אם קיימים כאלה, אני אשמח אם תפנו אותי למקורות שסוקרים אותם באופן כללי. מקווה שהשאלה הובנה. תודה מראש!