Menu
Coddy logo textTech

חריגות מותאמות אישית

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C# של Coddy. שיעור 29 מתוך 66.

חריגות מותאמות אישית מאפשרות לך ליצור סוגי חריגות ספציפיים לתרחישי השגיאה הייחודיים של היישום שלך.

כדי ליצור חריגה מותאמת אישית, הגדירו מחלקה שיורשת מ־Exception. ירושה פירושה שהמחלקה החדשה שלכם מקבלת באופן אוטומטי את כל ההתנהגות של מחלקת האב, במקרה הזה Exception, ובמקביל מאפשרת לכם להוסיף פונקציונליות או להתאים אותה אישית. התחביר class MyException : Exception פירושו MyException מרחיבה את Exception.

public class InvalidAgeException : Exception
{
    public InvalidAgeException() : base("Age is not valid.")
    {
    }
    
    public InvalidAgeException(string message) : base(message)
    {
    }
}

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

עכשיו אפשר להשליך את החריגה המותאמת אישית שלך כשצריך:

int age = -5;
if (age < 0)
{
    throw new InvalidAgeException("Age cannot be negative.");
}

כאשר הקוד הזה רץ עם גיל שלילי, הוא יזרוק את החריגה המותאמת אישית שלך עם ההודעה "Age cannot be negative."

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

challenge icon

אתגר

בינוני

צור מחלקת חריגה מותאמת אישית בשם InvalidTemperatureException שיורשת מ־Exception. היא צריכה לכלול:

  1. בנאי ברירת מחדל שמגדיר הודעה "Temperature is not valid."
  2. בנאי שמקבל הודעה מותאמת אישית.

לאחר מכן, ממש את המתודה בשם checkTemperature ש:

  • מקבלת פרמטר של מספר שלם המייצג טמפרטורה במעלות צלזיוס
  • זורקת InvalidTemperatureException עם ההודעה "Temperature below absolute zero!" אם הטמפרטורה נמוכה מ־-273
  • מחזירה true אם הטמפרטורה תקינה

נסו בעצמכם

using System;

class CheckTemperature
{
    // צרו כאן מחלקת חריגה מותאמת אישית
    
    public static bool checkTemperature(int celsius)
    {
        // כתבו כאן את הקוד שלכם
    }
    
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר C# אונליין