try va catch — xatolarni ushlab, dasturning to’xtab qolishining oldini oladigan mexanizm. Har qanday dastur xato bilan uchrashadi: foydalanuvchi noto’g’ri ma’lumot kiritadi, fayl topilmaydi, nolga bo’lish sodir bo’ladi. Yaxshi dastur bunda “qulab tushmaydi”, balki xatoni ushlab, oqilona javob beradi. Bu — C# qo’llanmasining yakuniy mavzusi.
try-catch —
tryblokiga xavfli kod,catchblokiga esa xato yuz berganda bajariladigan kod yoziladigan konstruksiya. U istisnoni ushlab, dasturni davom ettiradi.
try va catch tuzilishi
try blokiga xavfli kodni, catch blokiga esa javob kodini yozamiz:
using System;
try
{
int natija = 10 / int.Parse("0");
Console.WriteLine(natija);
}
catch (DivideByZeroException)
{
Console.WriteLine("Xato: nolga bo'lish mumkin emas");
}
Console.WriteLine("Dastur davom etmoqda");
Xato: nolga bo'lish mumkin emas
Dastur davom etmoqda
Mana farqi: dastur qulamadi, xatoni ushlab, tushunarli xabar berdi va oxirgi qatorgacha ishlashda davom etdi. Aynan shu — barqaror dasturning belgisi.
Xato ma’lumotini olish
Ushlab olingan istisno obyekti xato haqida ma’lumot beradi. Message xususiyati sababni qaytaradi:
using System;
try
{
int son = int.Parse("salom"); // xato
Console.WriteLine(son);
}
catch (FormatException e)
{
Console.WriteLine($"Xato yuz berdi: {e.Message}");
}
Xato yuz berdi: The input string 'salom' was not in a correct format.
"salom" ni songa aylantirib bo’lmagani uchun FormatException yuz berdi. e.Message esa aniq sababni ko’rsatdi.
Bir necha catch va finally
Turli xato turlarini alohida ushlash mumkin. finally bloki esa har qanday holatda bajariladi:
using System;
try
{
int[] arr = {1, 2, 3};
Console.WriteLine(arr[5]);
}
catch (IndexOutOfRangeException)
{
Console.WriteLine("Massiv chegarasidan chiqdi");
}
finally
{
Console.WriteLine("Amal yakunlandi");
}
Massiv chegarasidan chiqdi
Amal yakunlandi
C# xato turiga mos catch ni tanladi. finally esa xatodan qat’i nazar bajarildi — u fayl yopish kabi “tozalash” ishlarini kafolatlaydi.
try-catch-finally jadvali
Uch blokning vazifasini jamlaymiz:
| Blok | Qachon bajariladi |
|---|---|
try |
doim (xavfli kod shu yerda) |
catch |
faqat xato yuz berganda |
finally |
har doim (xato bo’lsa ham, bo’lmasa ham) |
Xulosa
Bu bo’limda try-catch bilan xatoni ushlash, Message bilan sababni olish, bir necha catch va finally blokini ko’rib chiqdik. Xatolarni to’g’ri boshqarish — professional dasturchining belgisi.