Darsliklar Java Xatoliklar (Exceptions)

Java Java Xatoliklar (Exceptions)

Xatoliklar (Exceptions) — dastur ijrosi vaqtida yuzaga keladigan g’ayrioddiy holatlar. Har qanday dastur xato bilan uchrashadi: foydalanuvchi noto’g’ri ma’lumot kiritadi, fayl topilmaydi, nolga bo’lish sodir bo’ladi. Bu darsda xatoliklar tabiatini, turlarini tushunib olamiz; ularni ushlashni esa keyingi darsda o’rganamiz.

Exception (istisno)dastur normal ijrosini buzadigan hodisa. Java’da istisnolar obyekt sifatida ifodalanadi va ular ushlanmasa, dasturni to’xtatadi.

Xatolik qanday ko’rinadi?

Avval ushlanmagan xatolik dasturni qanday to’xtatishini ko’ramiz. Nolga bo’lishga urinaylik:

public class Main {
    public static void main(String[] args) {
        int son = 10;
        int natija = son / 0;   // bu xato beradi
        System.out.println(natija);
    }
}
Exception in thread "main" java.lang.ArithmeticException: / by zero

Dastur ArithmeticException bilan to’xtadi va println umuman ishlamadi. Real ilovada bu — butun tizimning ishdan chiqishi. Buni oldini olishimiz kerak.

Xatolik turlari

Java’da xatoliklar ikki katta guruhga bo’linadi. Ularni jadvalda ko’ramiz:

Turi Xususiyati Misol
Checked kompilyatsiyada tekshiriladi, ushlash majburiy IOException
Unchecked ish vaqtida yuzaga keladi ArithmeticException, NullPointerException

Checked xatoliklar (masalan, fayl bilan ishlash) kodda majburan ushlanishi kerak. Unchecked xatoliklar esa dasturchi mantiqidagi kamchilikdan kelib chiqadi.

Keng tarqalgan xatoliklar

Amaliyotda eng ko’p uchraydigan xatolik turlarini bilish muhim:

  • ArithmeticException — nolga bo’lishda.
  • NullPointerException — mavjud bo’lmagan (null) obyektga murojaatda.
  • ArrayIndexOutOfBoundsException — massiv chegarasidan chiqishda.
  • NumberFormatException — matnni songa noto’g’ri o’girishda.

Massiv chegarasidan chiqish misolini ko’ramiz:

public class Main {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3};
        System.out.println(arr[5]);   // 5-indeks yo'q
    }
}
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 3

Xatolik xabari aniq: 3 elementli massivda 5-indeks yo’q. Java bunday xatoliklarni batafsil tushuntiradi.

Xatolik obyektining tuzilishi

Har bir istisno — bu obyekt. Uning getMessage() metodi xato sababini, turi esa muammo tabiatini bildiradi. Aynan shu tuzilish tufayli biz keyingi darsda xatoliklarni ushlab, ularga oqilona javob bera olamiz.

Xulosa

Bu bo’limda xatoliklar tabiatini, ushlanmagan xatolik dasturni to’xtatishini, checked/unchecked turlarini va keng tarqalgan istisnolarni ko’rib chiqdik. Xatoliklarni tushunish — ishonchli dastur yozishning birinchi qadami. Keyingi darsda ularni try va catch bilan ushlashni o’rganamiz.