דף הבית  שיעורים  נושאים מתקדמים  טיפול ב-exceptions - המשך
 
טיפול ב-exceptions - המשך
 
הפונקציה Set המשמשת לשינוי התאריך תכיל קוד כמו זה:

void Date::Set(int year, int month, int day)
{
 if ( (month<1) || (month>12) )
  throw MonthRange();
 /* The rest of the function body... */
}
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

והנה דוגמא לאיך פונקצית ה-Set יכולה להיקרא:

void Sample()
{
 Date a;
 try
 {
  a.Set(1996,13,1);
 }
 catch (Date::MonthRange)
 {
  /* do something appropriate... */
 }
}
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

ניתן גם לבנות היררכיה של טיפוסי שגיאות:

class Date {
 int day;
 int month;
 int year;
public:
 Date();
 class Range{};
 class YearRange:public Range{};
 class MonthRange:public Range{};
 class DayRange:public Range{};
 void Set(int year, int month, int day);
};
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

כאן, יצרנו את הטיפוס Range שהוא בעל שלושה תת טיפוסים: YearRange, MonthRange, DayRange. כדי לתפוס exception של כל ארבעת הטיפוסים, אפשר לעשות כך:

catch (Date::Range)
{
  /* do something appropriate... */
}
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט