Intern
C# dasturlash tilida istisnolar nima?
sobes.tech AI
AIdan javob
C# tilida istisnolar, dastur bajarilishi davomida yuzaga keladigan anomal yoki xatoliklar bo'lib, ularning oqimini buzadi.
Ular xato bilan ishlash kodini dasturiy logikaning asosiy kodidan ajratishga imkon beradi va xatolarni boshqarish uchun yanada tuzilmalangan yondashuvni taqdim etadi.
C# da istisnolarning asosiy jihatlari:
- Istisno turlari: C# standart istisno sinflarining ierarxiyasiga ega bo'lib, ular
System.Exceptionasosiy sinfidan meros oladi. Masalan,System.NullReferenceException,System.DivideByZeroException,System.IO.FileNotFoundException. Shuningdek, o'z istisno sinflaringizni yaratishingiz mumkin. - Istisno yaratish (throw):
throwkalit so'zi yordamida istisno yaratiladi. - Istisnoni ushlash (try-catch):
trybloki istisno yuzaga kelishi mumkin bo'lgan kodni o'z ichiga oladi.catchbloki ma'lum bir istisno turini ushlaydi va uni boshqarish uchun kodni bajaradi. - Finally bloki:
finallybloki har doim bajariladi, istisno yuzaga kelgan yoki kelmagan bo'lsa ham. U ko'pincha resurslarni bo'shatish uchun ishlatiladi. - Using operatori: Resurslarni boshqarish uchun qulayroq usul bo'lib,
Disposemetodini chaqirishni kafolatlaydi. Butry-finallytuzilmasiga o'xshaydi,IDisposableinterfeysini amalga oshiradigan ob'ektlar uchun. - Istisno filtrlari:
catchblokiga shart qo'shish imkonini beradi, bu esa istisnolarni yanada aniqroq boshqarishga yordam beradi.
Misol uchun:
public class Example
{
public void ProcessData(int denominator)
{
try
{
int result = 10 / denominator; // DivideByZeroException yuzaga kelishi mumkin
Console.WriteLine($"Natija: {result}");
}
catch (DivideByZeroException ex) // Aniq istisnani ushlaymiz
{
Console.WriteLine("Xato: nolga bo'lib bo'lmaydi.");
// Xatoni log qilish, kerak bo'lsa
// Console.WriteLine($"Xato tafsilotlari: {ex.Message}");
}
catch (Exception ex) // Boshqa istisnalarni ushlaymiz
{
Console.WriteLine($"Kutilmagan xato yuz berdi: {ex.Message}");
}
finally // Bu blok har doim bajariladi
{
Console.WriteLine("Jarayon yakunlandi.");
}
}
public void UsingExample()
{
// `using` yordamida avtomatik `Dispose` chaqirilishini misol qilish
using (StreamReader reader = new StreamReader("file.txt"))
{
string line = reader.ReadLine();
Console.WriteLine(line);
} // Bu yerda reader.Dispose() avtomatik chaqiriladi, hatto istisno yuzaga kelsa ham
}
public void ThrowExample(int value)
{
if (value < 0)
{
throw new ArgumentOutOfRangeException(nameof(value), "Qiymat musbat bo'lishi kerak."); // O'z istisnomizni yaratish
}
// ... keyingi logika
}
}
Istisnolarni ishlatish, ishonchli, o'qilishi oson va texnik xizmat ko'rsatish uchun qulay bo'lgan dasturlar yaratishga yordam beradi, xato bilan ishlashni asosiy logikadan ajratadi.