Java'da xatolar qanday ishlanadi va ular bilan qanday ishlash mumkin?
sobes.tech AI
AIdan javob
Java'da xatolar istisno mexanizmi yordamida boshqariladi. Istisnolar — bu dasturning odatiy bajarilish jarayonini to'xtatadigan voqealardir. Ikki turdagi istisnolar mavjud: Tekshiriladigan (Checked Exceptions) va Tekshirilmaydigan (Unchecked Exceptions).
Tekshiriladigan istisnolar:
java.lang.Exceptiondan meros oladi (RuntimeExceptionbundan mustasno).- Ularni
try-catchyordamida boshqarish yoki metod imzosida (throws) e'lon qilish kerak. - Oddiy sharoitlarda yuzaga kelishi mumkin bo'lgan xatolarni ifodalaydi (masalan,
IOException,FileNotFoundException).
Tekshirilmaydigan istisnolar:
java.lang.RuntimeExceptionyokijava.lang.Errordan meros oladi.- Majburiy boshqarish yoki e'lon qilish shart emas.
- Ko'pincha koddagi mantiqiy xatolar yoki bajarilish muhitining noxush holatlarini ko'rsatadi (masalan,
NullPointerException,ArrayIndexOutOfBoundsException).
Istisnalarni boshqarish:
Istisnalarni boshqarish uchun try-catch-finally bloklari ishlatiladi:
try: Xatolik yuzaga kelishi mumkin bo'lgan kod bloki.catch:tryblokida belgilangan turdagi istisno yuzaga kelsa, bajariladigan kod.finally: Har doim bajariladigan kod. Ko'pincha resurslarni ozod qilish uchun ishlatiladi (masalan, fayllarni yopish, ulanishlarni yopish).
try {
// Xatolik yuzaga kelishi mumkin bo'lgan kod
int result = 10 / 0; // Misol: ArithmeticException
} catch (ArithmeticException e) {
// ArithmeticException ni boshqarish
System.err.println("Nolga bo'linish xatosi: " + e.getMessage());
// Xatoni log qilish, foydalanuvchiga xabar ko'rsatish va boshqalar.
} catch (Exception e) {
// Boshqa istisnalarni boshqarish
System.err.println("Umumiy xato: " + e.getMessage());
} finally {
// Har doim bajariladigan kod
System.out.println("Finally bloki bajarildi.");
}
Istisnalarni uzatish:
Metod, muayyan istisnani generatsiya qilish imkoniyatini throws kalit so'zi yordamida e'lon qilishi mumkin:
public void readFile(String filePath) throws FileNotFoundException, IOException {
// Faylni o'qish kodi
// Fayl topilmasa, `FileNotFoundException` (`IOException` ning vorisi) chiqariladi
FileReader fr = new FileReader(filePath);
// I/O xatosi yuzaga kelsa, `IOException` chiqariladi
// ...
}
Chaqiruvchi metod, yoki bu istisnani boshqarishi yoki throws bilan e'lon qilishi kerak.
O'z istisnalarini yaratish:
Exception yoki RuntimeException dan meros olgan o'z klasslarini yaratish mumkin:
public class MyCustomException extends Exception {
public MyCustomException(String message) {
super(message);
}
}
Foydalanish:
public void processData(int value) throws MyCustomException {
if (value < 0) {
throw new MyCustomException("Qiymat manfiy bo'lishi mumkin emas");
}
// Ma'lumotlarni qayta ishlash
}
Asosiy istisno klasslari (hierarxiya):
java.lang.Throwable(barcha xatolar va istisnalar uchun asosiy klass)java.lang.Error(jiddiy muammolar uchun, odatda, dastur tomonidan boshqarilmaydi, masalan,OutOfMemoryError)java.lang.Exception(dastur tomonidan boshqariladigan istisnalar)java.lang.RuntimeException(Tekshirilmaydigan istisnalar)NullPointerExceptionArrayIndexOutOfBoundsExceptionArithmeticException- va boshqalar.
Exceptionning boshqa subklasslari (Tekshiriladigan istisnalar)IOExceptionFileNotFoundExceptionSQLException- va boshqalar.
Xatolar bilan ishlash, bu hierarxiyani tushunishni, mos turdagi istisnani tanlashni (o'zlar uchun yaratishda), try-catch-finally'ni samarali ishlatishni va xatolarni log qilishni, shuningdek, xatoliklarni debugging uchun qilishni o'z ichiga oladi.