17. Exception Handling

Dastur ishlayotganda ba'zan xatolar yuz berishi mumkin.

Masalan, foydalanuvchi 0 ga bo‘lishni so‘rashi mumkin.

int a = 10;
int b = 0;

int natija = a / b;

Bu kod ishlaganda xato yuz beradi.

Java bunday xatolarni exception deb ataydi.

Exception nima?

Exception — dastur ishlayotgan vaqtda yuzaga keladigan muammo.

Masalan:

10 / 0

yoki mavjud bo‘lmagan array elementiga murojaat qilish.

int[] sonlar = {10, 20, 30};

System.out.println(sonlar[5]);

Bu ham xato beradi.

try

Xato yuz berishi mumkin bo‘lgan kodni try ichiga yozamiz.

try {

    int natija = 10 / 0;

}

Lekin tryning o‘zi yetarli emas.

Xatoni ushlash uchun catch kerak.

catch

catch exceptionni ushlaydi.

try {

    int natija = 10 / 0;

} catch (Exception e) {

    System.out.println("Xatolik yuz berdi.");
}

Natija:

Xatolik yuz berdi.

Dastur xato sababli birdaniga to‘xtab qolmaydi.

To‘liq misol

public class Main {

    public static void main(String[] args) {

        try {

            int a = 10;
            int b = 0;

            int natija = a / b;

            System.out.println(natija);

        } catch (Exception e) {

            System.out.println("Xatolik yuz berdi.");
        }
    }
}

Natija:

Xatolik yuz berdi.

Exception nomini ko‘rish

Exception haqida ma'lumot olish uchun e.getMessage() ishlatish mumkin.

try {

    int natija = 10 / 0;

} catch (Exception e) {

    System.out.println(e.getMessage());
}

Java exception haqida ma'lumot beradi.

Maxsus exception turi

Har doim Exception yozish shart emas.

Masalan, 0 ga bo‘lishda ArithmeticException yuz beradi.

try {

    int natija = 10 / 0;

} catch (ArithmeticException e) {

    System.out.println("0 ga bo‘lish mumkin emas.");
}

Natija:

0 ga bo‘lish mumkin emas.

Array exception

Masalan:

int[] sonlar = {10, 20, 30};

System.out.println(sonlar[5]);

Arrayda faqat 0, 1, 2 indekslar mavjud.

Shuning uchun exception yuz beradi.

Buni ushlash mumkin:

try {

    int[] sonlar = {10, 20, 30};

    System.out.println(sonlar[5]);

} catch (ArrayIndexOutOfBoundsException e) {

    System.out.println("Bunday indeks mavjud emas.");
}

Natija:

Bunday indeks mavjud emas.

finally

Ba'zan exception yuz bersa ham, yuz bermasa ham ma'lum kod ishlashi kerak.

Buning uchun finally ishlatiladi.

try {

    System.out.println("Dastur ishlayapti.");

} catch (Exception e) {

    System.out.println("Xatolik.");

} finally {

    System.out.println("Bu kod har doim ishlaydi.");
}

Natija:

Dastur ishlayapti.
Bu kod har doim ishlaydi.

try, catch, finally

Ularni oddiy qilib shunday eslab qoling:

try     → xato bo‘lishi mumkin bo‘lgan kod
catch   → xatoni ushlaydi
finally → har doim bajariladi

Bir nechta catch

Bir nechta turdagi exceptionni alohida ushlash mumkin.

try {

    int[] sonlar = {10, 20};

    System.out.println(sonlar[5]);

} catch (ArithmeticException e) {

    System.out.println("Hisoblash xatosi.");

} catch (ArrayIndexOutOfBoundsException e) {

    System.out.println("Array indeksi xato.");
}

Qaysi exception yuz bersa, mos catch ishlaydi.

Oddiy real misol

Foydalanuvchi son kiritadi.

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        try {

            System.out.print("Son kiriting: ");

            int son = scanner.nextInt();

            System.out.println("Siz kiritgan son: " + son);

        } catch (Exception e) {

            System.out.println("Iltimos, son kiriting.");
        }
    }
}

Agar foydalanuvchi:

25

kiritsa:

Siz kiritgan son: 25

Agar:

hello

kiritsa:

Iltimos, son kiriting.

Nima uchun exception handling kerak?

Exception handling dasturimizni barqarorroq qiladi.

Masalan, foydalanuvchi noto‘g‘ri ma'lumot kiritsa, dastur butunlay to‘xtab qolmasligi mumkin.

Biz xatoni ushlab, foydalanuvchiga tushunarli xabar beramiz.

Amaliy mashqlar

1-mashq

10 ni 0 ga bo‘lishga harakat qiling.

try va catch yordamida xatoni ushlang.

2-mashq

Array yarating:

int[] sonlar = {10, 20, 30};

Mavjud bo‘lmagan indeksga murojaat qilib ko‘ring.

Exceptionni ushlang.

3-mashq

Foydalanuvchidan son olish dasturini yozing.

Agar foydalanuvchi son o‘rniga matn kiritsa, quyidagi xabarni chiqaring:

Iltimos, faqat son kiriting.

4-mashq

try, catch va finally ishlatiladigan kichik dastur yozing.

finally ichida:

Dastur tugadi.

chiqsin.

Muhim narsalarni eslab qoling

Exception — dastur ishlayotganda yuz beradigan xato.

try — xato bo‘lishi mumkin bo‘lgan kod.

catch — xatoni ushlaydi.

finally — har doim bajariladigan kod.

Masalan:

try {

    // xato bo‘lishi mumkin

} catch (Exception e) {

    // xatoni boshqarish

} finally {

    // har doim bajariladi
}

Exception handling dasturimizni xatolarga chidamli va foydalanuvchi uchun qulayroq qilishga yordam beradi.