סוגי חריגות
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C# של Coddy. שיעור 24 מתוך 66.
ב-C#, חריגות מסווגות לסוגים שונים בהתאם לשגיאה שהן מייצגות. הבנת הסוגים האלה עוזרת לך לטפל בשגיאות ביעילות רבה יותר.
בואו נבחן את סוגי החריגות הנפוצים:
מחלקת הבסיס של כל החריגות היא System.Exception.
try
{
// קוד שעלול לזרוק חריגה
}
catch (Exception ex)
{
// טפל בכל חריגה
Console.WriteLine(ex.Message);
}כמה סוגי חריגות נפוצים:
ArgumentException: נזרקת כאשר מתודה נקראת עם ארגומנט לא תקין.
string name = null;
if (name == null)
{
throw new ArgumentException("Name cannot be null");
}NullReferenceException: נזרקת כשמנסים לגשת לחבר באמצעות הפניה null.
string text = null;
// פעולה זו תזרוק NullReferenceException
int length = text.Length;IndexOutOfRangeException: נזרקת כאשר אינדקס של מערך נמצא מחוץ לגבולות המערך.
int[] numbers = { 1, 2, 3 };
// זה יזרוק IndexOutOfRangeException
int value = numbers[5];DivideByZeroException: נזרקת בעת חלוקת מספר שלם באפס.
int result = 10 / 0; // זה יזרוק DivideByZeroExceptionאפשר לתפוס חריגות ספציפיות:
try
{
int[] numbers = { 1, 2, 3 };
int value = numbers[5];
}
catch (IndexOutOfRangeException ex)
{
Console.WriteLine("Array index error: " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("General error: " + ex.Message);
}אתגר
קלצרו מתודה בשם ProcessArray אשר:
- מקבלת מערך של מספרים שלמים ואינדקס כפרמטרים
- מנסה לגשת לאיבר באינדקס שצוין
- מחזירה את ערך האיבר אם הפעולה הצליחה
- אם מתרחשת
IndexOutOfRangeException, תפסו אותה והחזירו -1
חתימת המתודה צריכה להיות:
public static int ProcessArray(int[] array, int index)נסו בעצמכם
using System;
class Program
{
public static int ProcessArray(int[] array, int index)
{
// כתבו כאן את הקוד שלכם
return 0;
}
static void Main(string[] args)
{
// קראו את הקלט של המערך
string input = Console.ReadLine();
// הסירו את הסוגריים המרובעים אם הם קיימים
if (input.StartsWith("[") && input.EndsWith("]"))
{
input = input.Substring(1, input.Length - 2);
}
string[] parts = input.Split(',');
int[] array = new int[parts.Length];
for (int i = 0; i < parts.Length; i++)
{
array[i] = int.Parse(parts[i].Trim());
}
// קראו את הקלט של האינדקס
int index = int.Parse(Console.ReadLine());
int result = ProcessArray(array, index);
Console.WriteLine(result);
}
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מערכים רב־ממדיים
יסודות מערכים דו־ממדייםהכרזה ואתחול של מערכים דו־ממדייםגישה לאיברי מערך דו־ממדילולאות מקוננות עם מערכים דו־ממדייםמערכים משונניםפעולות מטריצה נפוצותחזרה – מערכים רב־ממדיים7אופרטורים לוגיים מתקדמים
הערכה בקיצור דרךאופרטורים לוגיים מותניםקדימות אופרטוריםסיכום – אופרטורים מתקדמים2קבלת החלטות מתקדמת
תנאים מרוביםלוגיקה בוליאנית מורכבתהשוואה בין If ל-Switchהצהרות Switch מקוננותסיכום — קבלת החלטות מתקדמת5טיפול בחריגות
יסודות try-catchסוגי חריגותבלוקי catch מרוביםעבודה עם קבציםבלוק finallyשימוש ב-using לעומת try-finallyחריגות מותאמות אישיתסיכום – טיפול בשגיאות3שיפורים בלולאות
ביצועי לולאותאיטרציה במבנים מורכביםכל אחד מסוגי הלולאותרפקטורינג של לולאותסיכום – לולאות שעברו אופטימיזציה6טיפול בערכי Null
יסודות הפניה ל-Nullטיפוסי ערכים שניתנים ל-Nullדפוסי בדיקת Nullתכנות הגנתיסיכום – בטיחות מול Nullתרגלו בעצמכם: קומפיילר C# אונליין