2.7 - חריגות וערבויות פעולה - תרגול
תרגול - נקודת הcommit¶
כתבו פונקציה שמחליפה vector של intים בתוצאה מסוננת של קלט חדש. הערכים המותרים הם בין אפס למאה. אם מופיע ערך לא תקין, הפונקציה זורקת invalid_argument והמכולה המקורית נשארת ללא שינוי.
הוסיפו נקודת fault injection אחרי יצירת חצי מן המועמד, ובדקו שגם אז המקור נשמר. אין לבצע שינוי במקור לפני שהמועמד עבר את כל הבדיקות.
ערבות בסיסית¶
כתבו גרסה אחרת שמוסיפה איברים למקור תוך כדי בדיקה. הגדירו לה במפורש ערבות בסיסית והראו איזה מצב חלקי חוקי יכול להישאר אחרי שגיאה.
ניתוח חוזים¶
הסבירו למה catch לפי const reference ו־throw ללא ארגומנט משמרים את החריגה טוב יותר מתפיסה וזריקה לפי ערך. הסבירו גם למה הוספת noexcept לפונקציה שמקצה זיכרון אינה הופכת את ההקצאה לבטוחה.