Darsliklar Java try va catch

Java Java try va catch

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-catchtry blokiga xavfli kod, catch blokiga 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.