crazy_coder
Moderatör
- Katılım
- 20 Şub 2026
- Mesajlar
- 204
- Tepkime puanı
- 0
- Puanları
- 16
Custom Exception: Uygulamaya Özel Hata Yönetimi
1. Neden Kendi Hata Sınıfımızı Oluştururuz?
Standart Java istisnaları çok geneldir. Kendi sınıflarınızı oluşturduğunuzda:
Anlamlı İsimlendirme: Hatanın nedenini isminden (YetersizBakiyeException) anlarsınız.
Özel Veriler: Hata nesnesinin içine hata kodu, kullanıcı ID'si veya eksik olan miktar gibi ek bilgiler ekleyebilirsiniz.
Merkezi Yönetim: Uygulamanın farklı katmanlarında bu özel hatayı yakalayıp ona göre strateji geliştirebilirsiniz.
2. Adım Adım Custom Exception Oluşturma
Adım 1: Sınıfı Tanımlayın
Özel bir hata sınıfı oluşturmak için Exception (Checked) veya RuntimeException (Unchecked) sınıfını extends etmeniz gerekir.
Java:
// Checked Exception: Derleme aşamasında kontrol zorunludur.
public class YetersizBakiyeException extends Exception {
private double eksikMiktar;
public YetersizBakiyeException(String mesaj, double eksikMiktar) {
super(mesaj); // Üst sınıfa hata mesajını gönderir
this.eksikMiktar = eksikMiktar;
}
public double getEksikMiktar() {
return eksikMiktar;
}
}
Adım 2: Hatayı Fırlatın (throw)
Belirli bir koşul oluştuğunda bu yeni hata sınıfınızdan bir nesne oluşturup fırlatın.
Java:
public void paraCek(double miktar) throws YetersizBakiyeException {
double mevcutBakiye = 500.0;
if (miktar > mevcutBakiye) {
double fark = miktar - mevcutBakiye;
throw new YetersizBakiyeException("Bakiye yetersiz!", fark);
}
}
Adım 3: Hatayı Yakalayın (catch)
Metodu çağıran yerde bu özel hatayı yakalayıp içindeki ek bilgileri kullanın.
Java:
try {
banka.paraCek(750);
} catch (YetersizBakiyeException e) {
System.out.println("Hata Mesajı: " + e.getMessage());
System.out.println("Eksik Kalan Tutar: " + e.getEksikMiktar());
}
3. Checked mı, Unchecked mı Seçilmeli?
| Tür | Miras Alınan Sınıf | Ne Zaman Kullanılır? |
|---|---|---|
| Checked | Exception | Kullanıcının düzeltebileceği veya kurtarılabilecek durumlar (Dosya yolu düzeltme vb.). |
| Unchecked | RuntimeException | Genellikle programcı hataları veya kurtarılması beklenmeyen durumlar. |
Best Practices: Özel Hata Yazarken Dikkat Edilmesi Gerekenler
[]İsimlendirme: Sınıf isminin sonu mutlaka Exception ile bitmelidir (Örn: InvalidUserException).
[]Mesaj Desteği: En azından super(message) çağıran bir constructor ekleyin ki hata mesajı kaybolmasın.- Gereksiz Kullanmayın: Eğer IllegalArgumentException işinizi görüyorsa, sırf "özel olsun" diye yeni sınıf oluşturmayın. Sadece iş mantığınızın bir parçasıysa oluşturun.
Sonuç
Custom Exception'lar, kodunuzun bir hikaye anlatmasını sağlar. Sadece "bir hata oluştu" demek yerine, "Kullanıcı 250 TL eksik olduğu için para çekemedi" diyebilen bir sistem inşa etmenize yardımcı olur. Bu da hata ayıklama (debugging) sürecini inanılmaz kolaylaştırır.