Java istisnolar (exceptions)
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.
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.
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.
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)
Agar age 20 bo‘lganida, istisno yuz bermagan bo‘lardi:
Misol
checkAge(20);
Natija quyidagicha bo‘ladi:
Access granted - You are old enough!
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!
