טיפול בחריגות – הבדלי גרסאות
תוכן שנמחק תוכן שנוסף
מ קטלוג תבנית עריכה |
מ בוט: החלפת טקסט אוטומטית (-([א-תְֱֲֳִֵֶַָֹֻּּׁׂ]\W*)(?:|)+ +\1, -(?:|)+(\W*[א-תְֱֲֳִֵֶַָֹֻּּׁׂ]) +\1) |
||
שורה 29:
==התפתחות הטיפול בחריגות==
מנגנון הטיפול בחריגות פותח לאחר הצגת שפת [[C Plus Plus|C++
==טיפול בחריגות בשפות תכנות שונות==
שורה 43:
אם בשפה קיימת ספריית מחלקות לטיפול בחריגות, ניתן להגדיר מחלקה יורשת מהן, המותאמת לצורכי תוכנית כלשהי.
===[[C Plus Plus|C++
ב++C ניתן לזרוק '''כל אובייקט שהוא''', כולל מספרים, מצביעים או טיפוסים שהוגדרו על ידי המשתמש. השפה מאפשרת - אך לא מחייבת - הגדרה בחתימת הפונקציה של רשימת האובייקטים אותם הפונקציה עשויה לזרוק. פונקציה המשתמשת באפשרות הזאת איננה יכולה לזרוק חריגות אחרות.
בעבר נהגו מתכנתי C++
כאשר נזרקת חריגה ב++C, הבקרה לא מופנית ישירות אל הנקודה שבה יתבצע הטיפול בחריגה, אלא עולה בהיררכיית הקריאות תוך קריאה לdestructor של כל אובייקט שהוקצה על המחסנית ויצא מטווח הקריאה (scope). כך נמנעת אפשרות שלא יתבצע destructor עבור משתנים מקומיים לפונקציה בזמן יציאה ממנה, דבר שעלול לגרום דליפות זיכרון ובמקרים מסוימים להתנהגות לא מוגדרת של התוכנית. טכניקת תכנות נפוצה מנצלת תכונה זו על מנת לדאוג לכך שכל משאב מוגבל שנתפס - זיכרון שהוקצה דינמית, קובץ שנפתח, [[מנעול (מדעי המחשב)|מנעול]] וכדומה - ישוחרר בכל מקרה, על ידי יצירת אובייקט שכל תפקידו הוא לבצע את השחרור של המשאב בזמן ההריסה (לדוגמה, מצביעים חכמים לטיפול בהקצאות זיכרון דינמיות).
שורה 62:
===שפות [[NET.]] ===
שפות כדוגמת [[C sharp|C#
ניתן לזרוק חריגה תקנית של
===[[Visual Basic]]===
עד גרסה 6.0 (כולל) – הטיפול בחריגות נעשה באמצעות פקודות השייכות לשפה אשר מפעילות שגרת טיפול. העברת נתונים לגבי החריגה התבצעה באמצעות האובייקט Err אשר נוצר בעת התרחשות שגיאה.
החל מגרסה 7.0 הנקראת Visual Basic .NET – ניתן להשתמש במחלקות החריגות של
===[[Perl]]===
שורה 82:
==לקריאה נוספת==
* מאיר סלע, '''JAVA על כוס קפה''' – מרכז ההדרכה 2000.
* Bradley L. Jones, '''C#
* Stroustrup, Bjarne (2000). The C++ Programming Language, Special Edition, Addison-Wesley. ISBN 0-201-70073-5.
|