Istisnolar bilan ishlash — havaskor dasturchini professionaldan ajratib turadigan mavzu. 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. Dart’da bu try-catch orqali amalga oshiriladi.
Istisno (exception) — dastur ijrosi vaqtida yuzaga keladigan g’ayrioddiy holat. Dart’da
try,catch,finallyvathrowmexanizmi bunday holatni boshqaradi.
try va catch
try blokiga xavfli kodni, catch blokiga esa xato yuz berganda bajariladigan kodni yozamiz:
void main() {
try {
int natija = 10 ~/ 0; // nolga bo'lish
print(natija);
} catch (e) {
print("Xato ushlandi: $e");
}
print("Dastur davom etmoqda");
}
Xato ushlandi: IntegerDivisionByZeroException
Dastur davom etmoqda
Mana farqi: dastur qulamadi, xatoni ushlab, xabar berdi va oxirgi qatorgacha ishlashda davom etdi. catch (e) — e da xato haqidagi ma’lumot bo’ladi.
Ma’lum istisno turini ushlash
on kalit so’zi bilan ma’lum turdagi istisnoni alohida ushlash mumkin:
void main() {
try {
var son = int.parse("salom"); // xato
print(son);
} on FormatException {
print("Xato: bu son emas");
}
}
Xato: bu son emas
on FormatException — aynan format xatosini ushladi. Turli xatolarni alohida ushlash aniqroq javob berish imkonini beradi.
finally bloki
finally bloki xatodan qat’i nazar (bo’ladimi-yo’qmi) doim bajariladi:
void main() {
try {
print("Amal boshlandi");
throw Exception("Sun'iy xato");
} catch (e) {
print("Xato ushlandi");
} finally {
print("Amal yakunlandi");
}
}
Amal boshlandi
Xato ushlandi
Amal yakunlandi
finally xatodan qat’i nazar bajarildi — u fayl yopish kabi “tozalash” ishlarini kafolatlaydi. throw — o’zimiz xato “otish” uchun ishlatiladi.
try-catch-finally jadvali
Uch blokning vazifasini jamlaymiz:
| Blok | Qachon bajariladi |
|---|---|
try |
doim (xavfli kod) |
catch / on |
faqat xato yuz berganda |
finally |
har doim |
Xulosa
Bu bo’limda try-catch bilan xatoni ushlash, on bilan ma’lum turni ushlash, finally bloki va throw bilan xato otishni ko’rib chiqdik. Istisnolarni boshqarish — barqaror dastur yozishning kalitidir. Keyingi darsda obyektga yo’naltirilgan dasturlash (OOP) ga o’tamiz.