try va catch — xatoliklarni ushlab, dasturning to’xtab qolishining oldini oladigan mexanizm. O’tgan darsda ushlanmagan xatolik butun dasturni qulatishini ko’rdik. Endi shu xatolikni “ushlab”, oqilona javob berishni o’rganamiz. Bu — havaskorni professionaldan ajratib turadigan ko’nikma.
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:
public class Main {
public static void main(String[] args) {
try {
int natija = 10 / 0;
System.out.println(natija);
} catch (ArithmeticException xato) {
System.out.println("Xato: nolga bo'lish mumkin emas");
}
System.out.println("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. getMessage() metodi sababni qaytaradi:
public class Main {
public static void main(String[] args) {
try {
int son = Integer.parseInt("salom"); // xato
System.out.println(son);
} catch (NumberFormatException xato) {
System.out.println("Xato yuz berdi: " + xato.getMessage());
}
}
}
Xato yuz berdi: For input string: "salom"
"salom" ni songa aylantirib bo’lmagani uchun NumberFormatException yuz berdi. getMessage() esa aniq sababni ko’rsatdi.
Bir necha catch va finally
Turli xato turlarini alohida ushlash uchun bir necha catch yozish mumkin. finally bloki esa har qanday holatda (xato bo’ladimi-yo’qmi) bajariladi:
public class Main {
public static void main(String[] args) {
try {
int[] arr = {1, 2, 3};
System.out.println(arr[5]);
} catch (ArithmeticException xato) {
System.out.println("Arifmetik xato");
} catch (ArrayIndexOutOfBoundsException xato) {
System.out.println("Massiv chegarasidan chiqdi");
} finally {
System.out.println("Amal yakunlandi");
}
}
}
Massiv chegarasidan chiqdi
Amal yakunlandi
Java xato turiga mos catch ni tanladi. finally esa xatodan qat’i nazar bajarildi — u fayl yopish kabi “tozalash” ishlarini kafolatlaydi.
try-catch va 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, getMessage() bilan sababni olish, bir necha catch va finally blokini ko’rib chiqdik. Xatolarni to’g’ri boshqarish — barqaror, ishonchli dastur yozishning kalitidir. Keyingi darsda ma’lumotlar bazasi bilan ishlashga o’tamiz.