הפונקציה G מכילה פקודת catch אחת המטפלת בהפניות
לאובייקטים מסוג BadParam. מכיוון שהמחלקות BadFirstParam ו-BadSecondParam
יורשות
מהמחלקה BadParam, גם אובייקטים שלהם יתפסו בפקודת ה-catch.
פקודת ה-catch מפעילה את הפונקציה Print על האובייקט הנתפס ומכיוון
שהפונקציה Print הוגדרה כוירטואלית,
תופעל הפונקציה המתאימה בהתאם לטיפוס האובייקט הנזרק.
דבר אחרון שנרצה להזכיר הוא שניתן לרשום את כל ה-exceptions
שפונקציה יכולה לזרוק בהגדרת הפונקציה, כמו כאן:
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)
throw(YearRange,
MonthRange, DayRange);
};
העבר את העכבר על שורות הקוד
בכדי לקבל הסבר מפורט
זוהי דרך יעילה לתיעוד ולהדרכת משתמשים אילו exceptions הפונקציה
עלולה לזרוק. אך זוהי דרך בעייתית. ראשית, אם הפונקציה תזרוק
exception שאיננו ברשימה, המערכת תפסיק את התוכנית כברירת מחדל.
לכן תמיד כדאי לדאוג שהרשימה תהיה מלאה, דבר בעייתי בפני עצמו,
מכיוון שיתכן שהפונקציה קוראת לפונקציה אחרת שזורקת exception
מסוג אחר ללא ידיעתך.