טיפול ב-exceptions
 
משמעות המונח טיפול ב-exceptions הוא בסך הכל טיפול בשגיאות.


ב-C ביצענו בדיקת שגיאות ע"י הוספת בדיקה בכל נקודה בעייתית ודאגנו לכך שכל פונקציה תחזיר ערך שגיאה במקרה והיא נכשלת בפעולה משמעותית.
לשיטה זו מספר חסרונות עיקריים: בעת הקריאה לפונקציה אתה עלול לשכוח לבצע את הבדיקה, דבר העלול להביא לקריסת התוכנית, במקרה ושגיאה אכן מתרחשת בפועל, וזאת מכיוון שאף גורם אחר לא יתריע על כך.
בנוסף, לא תמיד פונקציה יכולה לספק ערך שגיאה, לדוגמא במקרה שבו היא נזקקת לכל הערכים האפשריים עבור תוצאת אמת.
ולבסוף, העובדה שיש לבדוק שגיאה בכל קריאה לפונקציה, ולא ניתן לאגד בבדיקה אחת מספר קריאות לפונקציות.
המנגנון החדש של ++C מספק לתוכנית יכולת לטפל בשגיאות הרצה בדרך נאה ואחידה. בפרט, מנגנון זה יכול לשמש ביצירת ספריית מחלקות כדי לדווח על שגיאות תוך השימוש בספריה זו.
דוגמא לפונקציה פשוטה המשתמשת בטיפול ב-exceptions:

int Sample(int x)
{
 try
 {
  if (x<10)
   throw 5;
 }
 catch (int a)
 {
  printf("A %d was thrown!", a);
 }
 return 0;
}
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

פקודת ה-try מציינת את גבולות הקוד שבכל שגיאה בתוכו יש לטפל.
פקודת ה-throw מצביעה על כך שקרתה שגיאה, ופקודת ה-catch מטפלת בשגיאה.
שים לב שפקודת ה-throw היא בעלת פרמטר, ולפקודת ה-catch פרמטר מתאים, בדומה מאד לקריאה לפונקציה.
הפקודות בבלוק ה-try יורצו בצורה הרגילה, במקרה ותקרה שגיאה, תורץ שורת קוד ה-throw, ולאחריה יורץ בלוק ה-catch. ברגע שפקודת ה-catch תסתיים, התוכנית תמשיך לרוץ משורת הקוד שלאחר פקודת ה-catch האחרונה.