Java bir nechta istisnolar


ULASHISH

Bir nechta istisnolar

Ba’zan bitta try blokida turli xatolar (istisnolar) yuz berishi mumkin. Ularni bir nechta catch bloklari yordamida qayta ishlashingiz mumkin.


Bitta try, ko‘plab catch

Bir nechta catch bloki qo‘shishingiz mumkin, Java esa tashlangan istisno tipiga mos keladigan birinchisini bajaradi:

Misol

public class Main {
  public static void main(String[] args) {
    try {
      int[] numbers = {1, 2, 3};
      System.out.println(numbers[10]);  // ArrayIndexOutOfBoundsException
      int result = 10 / 0;              // ArithmeticException
    } 
    catch (ArrayIndexOutOfBoundsException e) {
      System.out.println("Array index does not exist.");
    } 
    catch (ArithmeticException e) {
      System.out.println("Cannot divide by zero.");
    } 
    catch (Exception e) {
      System.out.println("Something else went wrong.");
    }
  }
}

Natija:

Array index does not exist.

O‘zingiz sinab ko‘ring »

Tushuntirish: Faqat birinchi istisno (ArrayIndexOutOfBoundsException) tashlanadi, shuning uchun faqat birinchi mos catch bajariladi.


Tartib muhim

Har doim aniqroq istisnolarni birinchi, umumiylarini esa keyin joylashtirishingiz kerak. Aks holda umumiy catch xatoni ushlab oladi va aniqroq catch bloklari hech qachon bajarilmaydi:

Misol (noto‘g‘ri tartib)

try {
  int result = 10 / 0;
} 
catch (Exception e) {
  System.out.println("General error.");
} 
catch (ArithmeticException e) {
  // This will never be reached
  System.out.println("Divide by zero.");
}

Maslahat: Exception’ni (umumiy istisnoni) har doim oxiriga qo‘ying.


Multi-catch

Java 7 dan boshlab | belgisi yordamida bitta catch blokida bir nechta istisnoni ushlashingiz mumkin. Bu turli istisnolar bir xil tarzda qayta ishlanishi kerak bo‘lganda foydali — shunda kodni takrorlashingizga to‘g‘ri kelmaydi:

Misol

try {
  int result = 10 / 0;
  int[] numbers = {1, 2, 3};
  System.out.println(numbers[10]);
} 
catch (ArithmeticException | ArrayIndexOutOfBoundsException e) {
  System.out.println("Math error or array error occurred.");
}

O‘zingiz sinab ko‘ring »



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!