חריגות מותאמות אישית
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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: החריגה עצמה היא התוצאה הנצפית עבור קלטים לא תקינים.
אתגר
בינוניצור מחלקת חריגה מותאמת אישית בשם InvalidTemperatureException שיורשת מ־Exception. עליה לכלול:
- בנאי ברירת מחדל שמגדיר את ההודעה "Temperature is not valid."
- בנאי שמקבל הודעה מותאמת אישית.
לאחר מכן, ממש את המתודה בשם checkTemperature ש:
- מקבלת פרמטר מסוג מספר שלם שמייצג טמפרטורה במעלות צלזיוס
- זורקת
InvalidTemperatureExceptionעם ההודעה "Temperature below absolute zero!" אם הטמפרטורה נמוכה מ־-273 - מחזירה true אם הטמפרטורה תקינה
נסו בעצמכם
using System;
class CheckTemperature
{
// צרו כאן את מחלקת החריגה המותאמת אישית שלכם
public static bool checkTemperature(int celsius)
{
// כתבו כאן את הקוד שלכם
}
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מערכים רב־ממדיים
יסודות מערכים דו־ממדייםהכרזה ואתחול של מערכים דו־ממדייםגישה לאיברי מערך דו־ממדילולאות מקוננות עם מערכים דו־ממדייםמערכים משונניםפעולות מטריצה נפוצותחזרה – מערכים רב־ממדיים7אופרטורים לוגיים מתקדמים
הערכה בקיצור דרךאופרטורים לוגיים מותניםקדימות אופרטוריםסיכום – אופרטורים מתקדמים2קבלת החלטות מתקדמת
תנאים מרוביםלוגיקה בוליאנית מורכבתהשוואה בין If ל-Switchהצהרות Switch מקוננותסיכום — קבלת החלטות מתקדמת5טיפול בחריגות
יסודות try-catchסוגי חריגותבלוקי catch מרוביםעבודה עם קבציםבלוק finallyשימוש ב-using לעומת try-finallyחריגות מותאמות אישיתסיכום – טיפול בשגיאות3שיפורים בלולאות
ביצועי לולאותאיטרציה במבנים מורכביםכל אחד מסוגי הלולאותרפקטורינג של לולאותסיכום – לולאות שעברו אופטימיזציה6טיפול בערכי Null
יסודות הפניה ל-Nullטיפוסי ערכים שניתנים ל-Nullדפוסי בדיקת Nullתכנות הגנתיסיכום – בטיחות מול Nullתרגלו בעצמכם: קומפיילר C# אונליין