crazy_coder
Moderatör
- Katılım
- 20 Şub 2026
- Mesajlar
- 204
- Tepkime puanı
- 0
- Puanları
- 16
Exception Handling: Hatalara Karşı Kalkan Oluşturma
1. Java Exception Hiyerarşisi
Java'da tüm hata ve istisnalar Throwable sınıfından türetilir. Temelde iki ana gruba ayrılırlar:
Error: Sistemsel ve genellikle programcının müdahale edemeyeceği ağır sorunlardır (Örn: Bellek bitmesi - OutOfMemoryError).
Exception: Programcının yakalayıp düzeltebileceği durumlardır.
Checked Exceptions: Derleme zamanında kontrol edilir. Java, bu hataları try-catch içine almanı veya throws ile belirtmeni zorunlu kılar.
Unchecked (Runtime) Exceptions: Çalışma anında oluşur. Genellikle mantık hatalarıdır (Örn: NullPointerException).
2. Try-Catch Bloğu: Yakala ve Yönet
Hata oluşma ihtimali olan kodları try bloğuna yazarız. Eğer bir hata oluşursa, program durmaz; bunun yerine hatayı uygun catch bloğuna paslar.
Java:
try {
int[] sayilar = {1, 2, 3};
System.out.println(sayilar[5]); // ArrayIndexOutOfBoundsException fırlatır
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Hata: Olmayan bir indekse erişmeye çalıştınız!");
}
3. Finally: Her Koşulda Çalışan Kod
finally bloğu, hata oluşsa da oluşmasa da mutlaka çalışır. Genellikle dosya kapatma veya veritabanı bağlantısını kesme gibi "temizlik" işlemleri için kullanılır.
Java:
try {
// Veritabanı işlemleri
} catch (SQLException e) {
System.out.println("Veritabanı hatası!");
} finally {
System.out.println("Bağlantı her durumda kapatılıyor...");
}
4. Throw ve Throws: Hata Fırlatma
throw: Belirli bir şart gerçekleştiğinde bilerek ve isteyerek bir hata fırlatmak için kullanılır.
throws: Bir metodun imzasında kullanılır. "Bu metot şu hataları fırlatabilir, çağıran kişi buna hazırlıklı olsun" mesajı verir.
Java:
public void bakiyeCek(double miktar) throws InsufficientFundsException {
if (miktar > bakiye) {
throw new InsufficientFundsException("Yetersiz bakiye!");
}
}
Hata Yönetiminde Best Practices
| Doğru Yaklaşım | Hatalı Yaklaşım |
|---|---|
| Sadece riskli satırları try içine almak. | Tüm kodu dev bir try bloğuna yazmak. |
| Spesifik hataları yakalamak (IOException). | Her şeyi genel Exception sınıfıyla yakalamak. |
| Hatayı loglamak veya kullanıcıya bilgi vermek. | catch bloğunu boş bırakmak (Hatayı yutmak). |
Sonuç
Hata yönetimi, uygulamanızın profesyonelliğini belirler. Kullanıcıya karmaşık sistem hataları yerine "Dosya bulunamadı, lütfen yolu kontrol edin" gibi anlamlı mesajlar vermek, kullanıcı deneyimini zirveye taşır.