Junior
Java'da istisnolarni qanday to'g'ri tashlash mumkin?
sobes.tech AI
AIdan javob
Istisna holatlari, dastur normal bajarilishini buzadigan va darhol qayta ishlashni talab qiladigan noxush holat yuzaga kelganda chiqarilishi kerak.
Asosiy tamoyillar:
- Xatoliklar haqida xabar berish uchun istisnalarni foydalaning, bajarilish oqimini boshqarish uchun emas.
- Standart kutubxonadan eng mos turdagi istisnani tanlang.
- Standartlar yetarli ma'lumot bermasa, o'z istisna sinflaringizni yarating.
- Xatolik sababi va kontekst haqida batafsil ma'lumotlarni istisna xabariga qo'shing.
- To'g'ri ishlay olmaydigan istisnalarni ushlamang. Ularni yuqoriga, chaqirishlar stekiga yuborish yaxshiroq.
- Resurslarni avtomatik yopish uchun
try-with-resourcesbloklaridan foydalaning. - Siz ishlov berayotgan yoki yuqoriga yuborayotgan istisnalarni yozib boring.
To'g'ri sintaksis: throw new MyException("Xato xabari");
Misol:
// O'z istisnangizni yarating
public class InvalidParameterException extends Exception {
public InvalidParameterException(String message) {
super(message);
}
}
// Istisno chiqaradigan metod
public int divide(int a, int b) throws InvalidParameterException {
if (b == 0) {
throw new InvalidParameterException("Nolga bo'lish mumkin emas");
}
return a / b;
}
// Metoddan foydalanish va istisnani ushlash
public void performDivision(int x, int y) {
try {
int result = divide(x, y);
System.out.println("Natija: " + result);
} catch (InvalidParameterException e) {
// Xatoni log qilish
System.err.println("Bo'linishdagi xato: " + e.getMessage());
// Qo'shimcha ishlov berish yoki yuqoriga yuborish
}
}
Checked va Unchecked istisnalar o'rtasidagi farq:
| Turi | Meros | Ishlatish/dasturlashni e'lon qilish | Misol |
|---|---|---|---|
| Checked | Exception (except RuntimeException) |
Ha (try-catch yoki throws) |
IOException, SQLException |
| Unchecked | RuntimeException |
Yo'q (kompilyator talab qilmaydi) | NullPointerException, ArrayIndexOutOfBoundsException |