Java istisnolar (exceptions)


ULASHISH

Java istisnolar (exceptions)

Xatolar bobida aytib o‘tilganidek, dasturni ishga tushirish paytida turli xil xatolar yuz berishi mumkin — masalan, kod yozishdagi xatolar, noto‘g‘ri kiritilgan ma’lumotlar yoki kutilmagan vaziyatlar.

Xato yuz berganda Java odatda to‘xtaydi va xato xabarini hosil qiladi. Buning texnik atamasi: Java istisno (exception) tashlaydi (xato tashlaydi).


Istisnolarni qayta ishlash (try va catch)

Istisnolarni qayta ishlash bajarilish vaqtida xatolarni ushlash va qayta ishlash imkonini beradi — shunda dasturingiz ishdan chiqmaydi.

Bunda turli kalit so‘zlardan foydalaniladi:

try operatori bajarilish vaqtida xatolarga tekshiriladigan kod blokini aniqlash imkonini beradi.

catch operatori try blokida xato yuz bersa, bajariladigan kod blokini aniqlash imkonini beradi.

try va catch kalit so‘zlari juft bo‘lib keladi:

Sintaksis

try {
  //  Block of code to try
}
catch(Exception e) {
  //  Block of code to handle errors
}

Quyidagi misolni ko‘rib chiqing:

Bu xatoga olib keladi, chunki myNumbers[10] mavjud emas.

public class Main {
  public static void main(String[ ] args) {
    int[] myNumbers = {1, 2, 3};
    System.out.println(myNumbers[10]); // error!
  }
}

Natija taxminan quyidagicha bo‘ladi:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
        at Main.main(Main.java:4)

Eslatma: ArrayIndexOutOfBoundsException mavjud bo‘lmagan indeks raqamiga murojaat qilishga uringaningizda yuz beradi.

O‘zingiz sinab ko‘ring »

Xato yuz bersa, uni ushlash va uni qayta ishlaydigan kodni bajarish uchun try...catch’dan foydalanishimiz mumkin:

Misol

public class Main {
  public static void main(String[ ] args) {
    try {
      int[] myNumbers = {1, 2, 3};
      System.out.println(myNumbers[10]);
    } catch (Exception e) {
      System.out.println("Something went wrong.");
    }
  }
}

Natija quyidagicha bo‘ladi:

Something went wrong.
O‘zingiz sinab ko‘ring »

finally

finally operatori natijadan qat’i nazar, try...catch’dan keyin kodni bajarish imkonini beradi:

Misol

public class Main {
  public static void main(String[] args) {
    try {
      int[] myNumbers = {1, 2, 3};
      System.out.println(myNumbers[10]);
    } catch (Exception e) {
      System.out.println("Something went wrong.");
    } finally {
      System.out.println("The 'try catch' is finished.");
    }
  }
}

Natija quyidagicha bo‘ladi:

Something went wrong.
The 'try catch' is finished.
O‘zingiz sinab ko‘ring »


throw kalit so‘zi

throw operatori o‘zingizning (maxsus) xatoingizni yaratish imkonini beradi.

throw operatori istisno tipi bilan birga ishlatiladi. Java tilida ko‘plab istisno tiplari mavjud: ArithmeticException, FileNotFoundException, ArrayIndexOutOfBoundsException, SecurityException va h.k.:

Misol

Agar age 18 dan kichik bo‘lsa, istisno tashlang ("Access denied" deb chiqaring). Agar age 18 yoki undan katta bo‘lsa, "Access granted" deb chiqaring:

public class Main {
  static void checkAge(int age) {
    if (age < 18) {
      throw new ArithmeticException("Access denied - You must be at least 18 years old.");
    }
    else {
      System.out.println("Access granted - You are old enough!");
    }
  }

  public static void main(String[] args) {
    checkAge(15); // Set age to 15 (which is below 18...)
  }
}

Natija quyidagicha bo‘ladi:

Exception in thread "main" java.lang.ArithmeticException: Access denied - You must be at least 18 years old.
        at Main.checkAge(Main.java:4)
        at Main.main(Main.java:12)
O‘zingiz sinab ko‘ring »

Agar age 20 bo‘lganida, istisno yuz bermagan bo‘lardi:

Misol

checkAge(20);

Natija quyidagicha bo‘ladi:

Access granted - You are old enough!
O‘zingiz sinab ko‘ring »

Xatolar va istisno tiplari

Quyidagi jadvalda Java tilidagi eng keng tarqalgan xatolar va istisnolarning ba’zilari har birining qisqacha tavsifi bilan keltirilgan:

Xato/istisno Tavsif
ArithmeticError Sonli hisoblashda xatolik yuz berganda sodir bo‘ladi
ArrayIndexOutOfBoundsException Massivda mavjud bo‘lmagan indeks raqamiga murojaat qilishga urinilganda sodir bo‘ladi
ClassNotFoundException Mavjud bo‘lmagan sinfga murojaat qilishga urinilganda sodir bo‘ladi
FileNotFoundException Faylga murojaat qilib bo‘lmaganda sodir bo‘ladi
InputMismatchException Noto‘g‘ri ma’lumot kiritilganda sodir bo‘ladi (masalan, son kutilgan joyga matn)
IOException Kiritish yoki chiqarish amali muvaffaqiyatsiz tugaganda sodir bo‘ladi
NullPointerException null bo‘lgan obyekt havolasiga murojaat qilishga urinilganda sodir bo‘ladi
NumberFormatException Ko‘rsatilgan stringni sonli tipga o‘tkazib bo‘lmaganda sodir bo‘ladi
StringIndexOutOfBoundsException Stringda mavjud bo‘lmagan belgiga murojaat qilishga urinilganda sodir bo‘ladi

Maslahat: Barcha xatolar va istisno tiplari ro‘yxati uchun Java xatolar va istisnolar ma’lumotnomasiga o‘ting.




W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!