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:
- İ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. - İstisna yaratmaq (throw):
throwaçar sözü ilə istisna yaradılır. - İstisnaları tutmaq (try-catch):
trybloku istisna yarada biləcək kodu ehtiva edir.catchbloku müəyyən bir istisna növünü tutar və onu idarə etmək üçün kod icra edir. - Finally bloku:
finallybloku həmişə icra olunur, istisna yaranıb-yaranmamasından asılı olmayaraq. O, çox vaxt resursların azad olunması üçün istifadə olunur. - Using operatoru: Resursların idarə olunması üçün daha rahat üsul,
Disposemetodunun çağırılmasını təmin edir. Bu,try-finallyquruluşuna bənzəyir vəIDisposableinterfeysini həyata keçirən obyektlər üçün istifadə olunur. - İstisna filtrləri:
catchblokuna şə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.