Exception Handling (Hata Yönetimi)
🎯 1. Exception Nedir?
Section titled “🎯 1. Exception Nedir?”Exception (istisna), program çalışırken oluşan beklenmedik hatalardır.
Java’da bu hatalar Exception Handling (hata yönetimi) mekanizmasıyla kontrol altına alınabilir.
💡 Hataları yönetmek, programın çökmesini önler.
🔹 2. Exception Türleri
Section titled “🔹 2. Exception Türleri”| Tür | Açıklama | Örnek |
|---|---|---|
| Checked Exception | Derleme zamanında kontrol edilir | IOException, SQLException |
| Unchecked Exception | Çalışma zamanında oluşur | NullPointerException, ArithmeticException |
| Error | Ciddi sistem hataları (müdahale edilmez) | OutOfMemoryError, StackOverflowError |
🔹 3. try - catch Yapısı
Section titled “🔹 3. try - catch Yapısı”try { int sonuc = 10 / 0;} catch (ArithmeticException e) { System.out.println("Hata: " + e.getMessage());}💡
trybloğundaki hatacatchbloğunda yakalanır.
🔹 4. Birden Fazla catch Bloğu
Section titled “🔹 4. Birden Fazla catch Bloğu”try { int[] sayilar = {1, 2, 3}; System.out.println(sayilar[5]);} catch (ArrayIndexOutOfBoundsException e) { System.out.println("Dizi sınırı aşıldı!");} catch (Exception e) { System.out.println("Genel bir hata oluştu.");}📌 Spesifik hatalar genel
Exceptionbloğundan önce yazılmalıdır.
🔹 5. finally Bloğu
Section titled “🔹 5. finally Bloğu”finally bloğu, hata olsa da olmasa da her zaman çalışır.
try { int sonuc = 10 / 2; System.out.println("Sonuç: " + sonuc);} catch (Exception e) { System.out.println("Bir hata oluştu.");} finally { System.out.println("İşlem tamamlandı.");}✅ Genellikle dosya kapatma, bağlantı sonlandırma gibi temizlik işlemleri burada yapılır.
🔹 6. throw Anahtar Kelimesi
Section titled “🔹 6. throw Anahtar Kelimesi”throw, manuel olarak hata fırlatmak için kullanılır.
public class Test { static void yasKontrol(int yas) { if (yas < 18) { throw new ArithmeticException("Yaş 18'den küçük olamaz!"); } else { System.out.println("Giriş başarılı!"); } }
public static void main(String[] args) { yasKontrol(16); }}💡
throw→ tek bir istisna fırlatmak için kullanılır.
🔹 7. throws Anahtar Kelimesi
Section titled “🔹 7. throws Anahtar Kelimesi”Bir metodun hangi hataları fırlatabileceğini belirtir.
import java.io.*;
public class DosyaOkuma { static void oku() throws IOException { FileReader f = new FileReader("veri.txt"); f.read(); f.close(); }
public static void main(String[] args) { try { oku(); } catch (IOException e) { System.out.println("Dosya bulunamadı!"); } }}📘
throws, metot bildiriminde,
throwise metot içinde kullanılır.
🔹 8. Custom Exception (Özel Hata Sınıfı)
Section titled “🔹 8. Custom Exception (Özel Hata Sınıfı)”Kendi hata türünüzü oluşturabilirsiniz.
class YasHatasi extends Exception { public YasHatasi(String mesaj) { super(mesaj); }}
public class Main { static void yasKontrol(int yas) throws YasHatasi { if (yas < 18) { throw new YasHatasi("Yaş 18'den küçük!"); } }
public static void main(String[] args) { try { yasKontrol(15); } catch (YasHatasi e) { System.out.println("Hata: " + e.getMessage()); } }}💡
extends Exception→ Checked Exception
extends RuntimeException→ Unchecked Exception
🔹 9. Çoklu Exception Yakalama (Java 7+)
Section titled “🔹 9. Çoklu Exception Yakalama (Java 7+)”Birden fazla hatayı tek catch bloğunda yakalayabilirsiniz.
try { int[] dizi = new int[3]; dizi[5] = 10 / 0;} catch (ArithmeticException | ArrayIndexOutOfBoundsException e) { System.out.println("Birden fazla hata yakalandı: " + e);}🔹 10. Nested try-catch (İç İçe Yapı)
Section titled “🔹 10. Nested try-catch (İç İçe Yapı)”try { try { int a = 10 / 0; } catch (ArithmeticException e) { System.out.println("İç blok hatası: " + e.getMessage()); }} catch (Exception e) { System.out.println("Dış blok hatası: " + e.getMessage());}🧩 11. Örnek: Kullanıcıdan Sayı Alma
Section titled “🧩 11. Örnek: Kullanıcıdan Sayı Alma”import java.util.Scanner;
public class SayıGirisi { public static void main(String[] args) { Scanner sc = new Scanner(System.in);
try { System.out.print("Bir sayı girin: "); int sayi = sc.nextInt(); System.out.println("Girdiğiniz sayı: " + sayi); } catch (Exception e) { System.out.println("Lütfen geçerli bir sayı girin!"); } finally { sc.close(); System.out.println("Program sonlandı."); } }}🧠 12. En Sık Kullanılan Exception Türleri
Section titled “🧠 12. En Sık Kullanılan Exception Türleri”| Exception | Açıklama |
|---|---|
ArithmeticException | Matematiksel hata (örn: 10/0) |
NullPointerException | Boş referans kullanımı |
ArrayIndexOutOfBoundsException | Dizi sınır aşımı |
FileNotFoundException | Dosya bulunamadı |
IOException | Giriş/çıkış hatası |
NumberFormatException | Yanlış sayı formatı |
🏁 Özet
Section titled “🏁 Özet”| Kavram | Açıklama | Anahtar Kelime |
|---|---|---|
| try-catch | Hataları yakalamak için | try { ... } catch (e) { ... } |
| finally | Her durumda çalışan blok | finally { ... } |
| throw | Hata fırlatma | throw new Exception() |
| throws | Hata bildirme | void metot() throws IOException |
| Custom Exception | Kendi hata sınıfını yazmak | class MyException extends Exception |
💡 Not: Hata yönetimi, sağlam (robust) uygulamalar yazmak için vazgeçilmezdir.