Sobes.tech
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-resources bloklaridan 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