» נושאי לימוד
» נושאי לימוד
יום שני 29 באפריל 2024
מבוא קצר לחריגות
דף ראשי  מתחילים  מבוא קצר לחריגות גרסה להדפסה

 

מבוא קצר לחריגות

 

מבוא

סטודנטים בקורס הקדמה לתכנות Java אחראים לידיעת והבנת כל החומר בשעור זה (חוץ מנושאים ספציפיים ב – C++).

הנושאים הספציפיים ב – C++ מוצעים כחומר משלים לטובת אלו שמכירים כבר C++ ומבצעים הסבה ל – Java.

דיון

 

מהי  חריגה?

 

 The Java Tutorial, http://java.sun.com/books/Series/Tutorial/TOC.html ב- ,
מביאות Campione מביאות ו‑Walrath הגדרה מצוינת של  חריגה  :

 

"חריגה  היא אירוע המתרחש במהלך ביצוע התוכנית ואשר מונע את המשך הזרימה הנורמלית של ההוראות."

 

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

 

זריקת חריגה

 

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

 

מטרת הטיפול בחריגות

 

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

 

Java ו‑++C תומכות בטיפול בחריגות

 

Java וגם ++C מספקות את היכולת לגלות ולטפל בחריגות. בשני המקרים, החריגה עשויה להיזרק

או בגלל המערכת או בגלל קוד שיצר המתכנת. Java היא רבה עוצמה יותר מ‑++C, ביחס לחריגה שנזרקת אוטומטית. הרשימה של חריגות , העשויות להיזרק על ידי המערכת ב‑Java, היא רשימה ארוכה למדי.

 

נכון לזמן הכתיבה, המחבר מודע לחריגה אוטומטית אחת בלבד, המובנית ב"סטנדרט המתפתח"
של ++
C. במהדרים השואפים לתאום לסטנדרט הזה, חריגה  נזרקת אוטומטית כאשר נכשל הניסיון להקצות זיכרון דינמי מן הערימה. (מיגוון של ספריות-מחלקה קנויות (proprietary class libraries) נוקטות באמצעים שונים לזריקת חריגות במקרים מיוחדים, אך בדרך כלל הן ייחודיות לכל יצרן.
יש לקוות, שיישום מלא של "ספריית תבניות סטנדרטית" ב‑++
C יוכל לתקן מצב זה בעתיד.)

 

גם כאשר חריגה  נזרקת אוטומטית ב‑++C, המערכת מסוגלת להתעלם ממנה.

 

מחריגות נבדקות לא ניתן להתעלם

 

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

 

דוגמה לציון חריגה

 

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

 

אם לא תיעשה הצהרה כזו. התוכנית לא תהודר.

 

/*File simple1.java Copyright 1997, R.G.Baldwin
**********************************************************/
class simple1 { //define the controlling class
  public static void main(String[] args) //define main
            throws java.io.IOException {
    int ch1, ch2 = '0';

    System.out.println(
      "Enter some text, terminate with #");

    //Get and save individual bytes
    while( (ch1 = System.in.read() ) != '#') ch2 = ch1;

    //Display the character immediately before the #
    System.out.println("The char before the # was "
      + (char)ch2);
  }//end main
}//End simple1 class.

 

 

התוכנית איננה זורקת חריגה ישירוֹת. היא עשויה לזרוק חריגה  בעקיפין באמצעות הקריאה ל‑System.in.read .

 

דיון קצר מאוד

 

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

 

סיכום

 

ש: מהי ההגדרה עבור חריגה  שניתנת ב‑The Java Tutorial by Campione & Walrath?

 

ת: ב‑The Java Tutorial ניתנת ההגדרה הבאה: "חריגה  היא אירוע המתרחש במהלך ביצוע התוכנית ואשר מונע את המשך הזרימה הנורמלית של ההוראות."

 

 25-12-03 / 20:26  נוצר ע"י רונית רייכמן  בתאריך 
 ביטויים - הקודםהבא - ארגומנטים משורת הפקודה 
תגובות הקוראים    תגובות  -  0
דרכונט
מהי מערכת הדרכונט?
אינך מחובר, להתחברות:
דוא"ל
ססמא
נושאי לימוד
חיפוש  |  לא פועל
משלנו  |  לא פועל
גולשים מקוונים: 3