Java bir nechta istisnolar
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.
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.");
}
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
