חריגות מותאמות אישית
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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# אונליין