Junior
186
Java-da istisnaları düzgün şəkildə necə atmaq olar?
AI-dan cavab
sobes.tech Süni İntellekt
İstisnalar, programın normal yürütmesini engelleyen ve derhal işleme alınması gereken beklenmedik durumlar meydana geldiğinde atılmalıdır.
Temel ilkeler:
- Hataları bildirmek için istisnaları kullanın, akış kontrolü için değil.
- Standart kütüphaneden en uygun istisna türünü seçin.
- Standartlar yeterli bilgi sağlamıyorsa, kendi istisna sınıflarınızı oluşturun.
- Hata nedenine ilişkin detaylı bilgileri, bağlam dahil olmak üzere, istisna mesajına ekleyin.
- Doğru şekilde işleyemeyeceğiniz istisnaları yakalamayın. Bunları çağrı yığını üzerinde yukarıya iletmek daha iyidir.
- Kaynakları otomatik olarak kapatmak için
try-with-resourcesbloklarını kullanın. - İşlediğiniz veya yukarıya ilettiğiniz istisnaları kaydedin.
Doğru sözdizimi: throw new MyException("Hata mesajı");
Örnek:
// Kendi istisna sınıfınızı oluşturun
public class InvalidParameterException extends Exception {
public InvalidParameterException(String message) {
super(message);
}
}
// İstisna atan bir metod
public int divide(int a, int b) throws InvalidParameterException {
if (b == 0) {
throw new InvalidParameterException("Sıfıra bölme kabul edilmez");
}
return a / b;
}
// Metodu kullanma ve istisnayı yakalama
public void performDivision(int x, int y) {
try {
int result = divide(x, y);
System.out.println("Sonuç: " + result);
} catch (InvalidParameterException e) {
// Hata kaydı
System.err.println("Bölme hatası: " + e.getMessage());
// Ek işlem veya iletme
}
}
Checked ve Unchecked istisnalar arasındaki fark:
| Turi | Miras | İşlem/deklarasyon gerektirir | Örnek |
|---|---|---|---|
| Checked | Exception (except RuntimeException) |
Evet (try-catch veya throws) |
IOException, SQLException |
| Unchecked | RuntimeException |
Hayır (derleyici zorunlu değil) | NullPointerException, ArrayIndexOutOfBoundsException |