Sobes.tech
Intern

C# proqramlaşdırma dilində istisnalar nədir?

sobes.tech Süni İntellekt

AI-dan cavab

C# dilində istisnalar, proqramın icrası zamanı baş verən anormal vəziyyətlər və ya səhvlərdir və onların normal axını pozur.

Onlar səhvlərin idarə olunması kodunu əsas proqram məntiqindən ayırmağa imkan verir və daha strukturlaşdırılmış yanaşma təmin edir.

C#-da istisnaların əsas aspektləri:

  1. İstisna növləri: C# standart istisna sinflərinin ierarxiyasına malikdir və bunlar System.Exception əsas sinfindən irsən gəlir. Məsələn, System.NullReferenceException, System.DivideByZeroException, System.IO.FileNotFoundException. Öz istisna sinflərinizi də yarada bilərsiniz.
  2. İstisna yaratmaq (throw): throw açar sözü ilə istisna yaradılır.
  3. İstisnaları tutmaq (try-catch): try bloku istisna yarada biləcək kodu ehtiva edir. catch bloku müəyyən bir istisna növünü tutar və onu idarə etmək üçün kod icra edir.
  4. Finally bloku: finally bloku həmişə icra olunur, istisna yaranıb-yaranmamasından asılı olmayaraq. O, çox vaxt resursların azad olunması üçün istifadə olunur.
  5. Using operatoru: Resursların idarə olunması üçün daha rahat üsul, Dispose metodunun çağırılmasını təmin edir. Bu, try-finally quruluşuna bənzəyir və IDisposable interfeysini həyata keçirən obyektlər üçün istifadə olunur.
  6. İstisna filtrləri: catch blokuna şərt əlavə etməyə imkan verir, bu da istisnaların daha dəqiq idarə olunmasına kömək edir.

İstifadə nümunəsi:

public class Example
{
    public void ProcessData(int denominator)
    {
        try
        {
            int result = 10 / denominator; // DivideByZeroException yarada bilər
            Console.WriteLine($"Nəticə: {result}");
        }
        catch (DivideByZeroException ex) // Xüsusi istisnayı tuturuq
        {
            Console.WriteLine("Xəta: sıfıra bölmək olmaz.");
            // Xətanın qeydiyyatı, lazım olsa
            // Console.WriteLine($"Xəta detalları: {ex.Message}");
        }
        catch (Exception ex) // Digər istisnaları tuturuq
        {
            Console.WriteLine($"Qeyri-adi xəta baş verdi: {ex.Message}");
        }
        finally // Bu blok həmişə icra olunacaq
        {
            Console.WriteLine("İşlem tamamlandı.");
        }
    }

    public void UsingExample()
    {
        // `using` istifadə edərək avtomatik `Dispose` çağırış nümunəsi
        using (StreamReader reader = new StreamReader("file.txt"))
        {
            string line = reader.ReadLine();
            Console.WriteLine(line);
        } // Burada, reader.Dispose() avtomatik çağırılır, hətta istisna baş verərsə də
    }

    public void ThrowExample(int value)
    {
        if (value < 0)
        {
            throw new ArgumentOutOfRangeException(nameof(value), "Dəyər mənfi olmamalıdır."); // Öz istisnamızı yaradırıq
        }
        // ... digər məntiq
    }
}

İstisnaların istifadəsi daha etibarlı, oxunaqlı və saxlanması asan tətbiqlər yaratmağa kömək edir, səhv işlənməsini əsas məntiqdən ayırır.