Hoşgeldin Misafir

Java’da Exception Handling Mantığı ve Profesyonel Hata Yönetimi

hakantopuzoglu

25 May 2018
2,235 Mesaj
TIM Görevleri
1

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Java’da Exception Handling Mantığı ve Profesyonel Hata Yönetimi

Herkese Merhaba,

Java’da en kritik konulardan biri olan **Exception Handling** (İstisna Yönetimi) konusunu mantığından, best practice’lerine kadar detaylı bir şekilde ele alacağız.

Sadece `try-catch` yazmak değil, profesyonel seviyede hata yönetimi, logging, custom exception’lar ve gerçek projelerde kullanılan teknikleri öğreneceğiz.

0QqTCwA.png



1. Exception Temelleri

- **Checked Exception** (Compile time) → `IOException`, `SQLException`
- **Unchecked Exception** (Runtime) → `NullPointerException`, `ArrayIndexOutOfBoundsException`
- **Error** → `OutOfMemoryError`, `StackOverflowError`

2. Temel try-catch-finally Yapısı

Kod:
try {
    // Riskli kod
    int sonuc = 10 / 0;
} catch (ArithmeticException e) {
    System.out.println("Hata: " + e.getMessage());
} catch (Exception e) {        // Genel catch (en sona yazılır)
    e.printStackTrace();
} finally {
    System.out.println("Her durumda çalışır");
}


3. Try-with-Resources (Java 7+)

Kod:
try (Connection conn = DriverManager.getConnection(url, user, pass);
     PreparedStatement pstmt = conn.prepareStatement(sql)) {
   
    // İşlemler...
   
} catch (SQLException e) {
    // Hata loglama
    logger.error("Veritabanı hatası", e);
}


4. Custom Exception Oluşturma

Kod:
public class GecersizKullaniciException extends RuntimeException {
    public GecersizKullaniciException(String mesaj) {
        super(mesaj);
    }
}

// Kullanımı
if (kullaniciYasi < 18) {
    throw new GecersizKullaniciException("Yaş 18'den küçük olamaz!");
}


5. Profesyonel Hata Yönetimi Yaklaşımları

  • Global Exception Handler (@ControllerAdvice - Spring)
  • Kapsamlı Logging (SLF4J + Logback / Log4j2)
  • Exception’ları anlamlı mesajlarla sarmak
  • Retry mekanizmaları ( Resilience4j )
  • Circuit Breaker Pattern


Önemli Tavsiyeler

- Asla boş `catch` bloğu bırakmayın!
- Kullanıcıya teknik hata mesajı göstermeyin.
- Hataları loglayın, gerekirse monitoring araçlarına (ELK Stack, Sentry) bildirin.

LOJİSTİK TİM SUNDU

btn1pyf.png




Siber Güvenlik ve Yazılım Paylaşımları için TurkHacks’e Katılın!