משך: 2 שעות אקדמיות (90 דקות).

מטרת השיעור: הסטודנטים יבינו את היררכיית ה-Exceptions וייצרו Custom Exception עסקי משל עצמם.

בסוף השיעור הסטודנטים צריכים: לסדר נכון כמה בלוקי catch לפי היררכיה, ליצור Custom Exception עם שדות מותאמים אישית, ולהסביר למה חריגה עסקית עדיפה על Exception גנרי.

דגש קריטי: זהו הרחבה ישירה של שיעור ה-Exceptions הבסיסי מהיחידה הקודמת — פתחו בחזרה קצרה על try/catch/finally לפני שמעמיקים.


מהלך השיעור

חלק בשיעורמשךהערות ודגשים
פתיחה וחיבור5 דקותחזרה קצרה: try/catch/finally מהיחידה הקודמת
הרעיון: היררכיה15 דקותכל Exception יורש מ-Exception; catch כללי תופס גם ספציפי
הבעיה: סדר catch שגוי10 דקותהדגימו שגיאת קומפילציה כשclass הכללי לפני הספציפי
הבעיה: Exception גנרי לשגיאה עסקית10 דקותthrow new Exception(“no money”) — קשה לתפוס ממוקד
הרעיון: Custom Exception25 דקותInsufficientFundsException עם שדות ובנייה עם base
תרגול מודרך20 דקותתרגיל 1+2

דגשים להעברת השיעור

  • הדגישו שהיררכיית catch מסודרת ספציפי→כללי היא חובה קומפילציה, לא רק המלצת סגנון — הדגימו את השגיאה בפועל.
  • Custom Exception צריך תמיד להיקשר לתרחיש עסקי אמיתי מהדומיין (לא “דוגמה גנרית”) — זה מה שהופך אותו שימושי, לא רק “עוד class שיורש מ-Exception”.
  • אם יש זמן, שווה להזכיר בקצרה ש-Custom Exceptions יתחברו בהמשך הקורס ל-Middleware טיפול-בשגיאות ב-ASP.NET Core.

מושגים

Exception Hierarchy — כל החריגות יורשות מ-Exception. Custom Exception — מחלקה שיורשת מ-Exception, מייצגת שגיאה עסקית ספציפית. throw — זריקה יזומה של חריגה כשמצב לא תקין מתגלה.


תרגיל חשיבה

שאלת פתיחה: “אתם בונים מערכת הזמנות. יש לכם throw new Exception(\"error\") בכל מקום שמשהו משתבש — מלאי חסר, תשלום נכשל, כתובת לא תקינה. מה הבעיה כשקוד קורא מנסה לתפוס ולהגיב אחרת לכל אחד מהם?”

מהלך: הובילו לתובנה: בלי סוגים ייחודיים, קוד קורא לא יכול להבדיל בין הסיבות בלי לפרש את תוכן ה-Message (מחרוזת חופשית, שברירה ופגיעה לשינויים). Custom Exceptions לכל תרחיש עסקי הופכים את ההבחנה לבטוחת-טיפוסים ונבדקת בקומפילציה.

מה המרצה מראה בסוף: הראו קוד עם catch (Exception ex) { if (ex.Message.Contains("stock")) ... } — פרסור מחרוזות שברירי. מיד אחר כך, אותו תרחיש עם catch (OutOfStockException ex) { ... ex.RequestedQuantity ... } — קומפילציה בטוחה, גישה ישירה לנתונים מובְנים.