Menu
Coddy logo textTech

סוגי חריגות

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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);
}
challenge icon

אתגר

קל

צרו מתודה בשם ProcessArray אשר:

  1. מקבלת מערך של מספרים שלמים ואינדקס כפרמטרים
  2. מנסה לגשת לאיבר באינדקס שצוין
  3. מחזירה את ערך האיבר אם הפעולה הצליחה
  4. אם מתרחשת 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);
    }
}
quiz iconבחנו את עצמכם

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

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

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