hakantopuzoglu
- 25 May 2018
- 2,235 Mesaj
- TIM Görevleri
- 1
Aktiflik
Seviye
Deneyim
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.
1. Exception Temelleri
- **Checked Exception** (Compile time) → `IOException`, `SQLException`
- **Unchecked Exception** (Runtime) → `NullPointerException`, `ArrayIndexOutOfBoundsException`
- **Error** → `OutOfMemoryError`, `StackOverflowError`
2. Temel try-catch-finally Yapısı
3. Try-with-Resources (Java 7+)
4. Custom Exception Oluşturma
5. Profesyonel Hata Yönetimi Yaklaşımları
Ö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.
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.
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
Siber Güvenlik ve Yazılım Paylaşımları için TurkHacks’e Katılın!

