Java programlama dilinde, programların çalışması sırasında beklenmeyen hatalar (exception) oluşabilir. Bu hatalar, programın aniden durmasına neden olabilir. İşte tam bu noktada Exception Handling (Hata Yönetimi) devreye girer. Hataları kontrol altına almak ve programın sağlıklı çalışmasını sağlamak için kullanılır.
Bu yazıda Java’da exception handling nedir, nasıl kullanılır, temel yapıları ve en iyi uygulamaları örneklerle anlatacağız.
🔍 Exception (İstisna) Nedir?
Exception, programın beklenmedik durumlarla karşılaştığında oluşturduğu hata nesnesidir. Örneğin; sıfıra bölme, dosya bulunamaması, yanlış giriş gibi durumlar exception yaratır.
Java’da exception’lar iki ana kategoriye ayrılır:
- Checked Exceptions: Derleme (compile) zamanında kontrol edilen hatalar. Örnek: IOException
- Unchecked Exceptions (Runtime Exceptions): Çalışma zamanında ortaya çıkan hatalar. Örnek: NullPointerException, ArithmeticException
Exception Handling Yapısı
Java’da exception handling için kullanılan temel yapılar:
1. try-catch Blokları
try
bloğu içinde hata oluşabilecek kodlar yazılır, catch
bloğu ise bu hatayı yakalayıp işlem yapar.
try {
int sonuc = 10 / 0; // ArithmeticException
} catch (ArithmeticException e) {
System.out.println("Sıfıra bölme hatası oluştu: " + e.getMessage());
}
2. finally Bloğu
try-catch
bloklarından sonra çalışan, hata olsa da olmasa da kesinlikle çalışacak kod bloğudur. Genellikle dosya kapama, bağlantı sonlandırma gibi işlemler için kullanılır.
try {
// hata çıkabilir
} catch (Exception e) {
// hata yakalanır
} finally {
System.out.println("Bu blok her zaman çalışır.");
}
3. throw Anahtarı
Kendi exception nesnenizi fırlatmak için kullanılır.
if (yas < 18) {
throw new IllegalArgumentException("Yaş 18’den küçük olamaz!");
}
4. throws Anahtarı
Metodun exception fırlatabileceğini belirtir. Çağıran metot bu hatayı yakalamak zorundadır.
public void dosyaOku() throws IOException {
// dosya okuma kodu
}
Exception Handling Örneği
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ExceptionOrnek {
public static void main(String[] args) {
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader("dosya.txt"));
String satir = reader.readLine();
System.out.println(satir);
} catch (IOException e) {
System.out.println("Dosya okunurken hata oluştu: " + e.getMessage());
} finally {
try {
if (reader != null)
reader.close();
} catch (IOException e) {
System.out.println("Dosya kapatılırken hata oluştu.");
}
}
}
}
⚠️ Hata Yönetimi Neden Önemlidir?
- Programın çökmesini önler.
- Kullanıcıya anlamlı hata mesajları gösterir.
- Kaynakların (dosya, ağ bağlantısı vb.) doğru kapanmasını sağlar.
- Daha güvenilir ve sürdürülebilir kod yazmayı sağlar.