CodeBlanks Logo Icon CodeBlanks

Exception hiyerarşisi

RuntimeException, IOException gibi istisnaları öğrenirsin.

Exception hiyerarşisi

Tüm istisnalar Throwable sınıfından türetilir. Error geri dönüşü olmayan sistem hatalarıdır; Exception ise programcı tarafından yönetilebilir. RuntimeException alt sınıfı denetlenmemiş (unchecked) kabul edilir.

Throwable
  ├─ Error
  └─ Exception
       ├─ RuntimeException (unchecked)
       └─ IOException (checked)

Denetlenmiş (checked) istisnalar derleme zamanında yakalanması veya throws ile bildirilmesi zorunlu olanlardır. IOException buna örnektir. Denetlenmemiş (unchecked) olanlar ise RuntimeException altındadır; yakalanması isteğe bağlıdır.

Yaygın istisna türleri

Bazı sık görülen istisnalar: NullPointerException (null nesne kullanımı), ArithmeticException (sıfıra bölme), ArrayIndexOutOfBoundsException (dizi dışı indeks) ve NumberFormatException (geçersiz sayı dizesi).

Integer.parseInt("abc");
// NumberFormatException
int[] arr = new int[3];
int x = arr[5];
// ArrayIndexOutOfBoundsException

Bu istisnaların hepsi RuntimeException altındadır; denetlenmemiştir. Kodunu dikkatli yazarak çoğu önlenebilir; null denetimi, sınır kontrolü ve girdi doğrulama bunlara örnektir.

Uygulama Geçersiz sayıyı yakala

String s = "abc"; tanımla. try içinde Integer.parseInt(s) çağır. NumberFormatException yakala ve Sayı değil yazdır.

Başlangıç kodu

Main.java
public class Main {
  public static void main(String[] args) {
    String s = "abc";
    // parseInt'i dene, NumberFormatException yakala, mesaj yaz
  }
}

Örnek çözüm

Main.java
try {
  int n = Integer.parseInt(s);
  System.out.println(n);
} catch (NumberFormatException e) {
  System.out.println("Sayı değil");
}

Beklenen çıktı

Sayı değil

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Aşağıdakilerden hangisi denetlenmemiş (unchecked) istisnadır?

  • IOException
  • Error
  • RuntimeException Doğru cevap
  • Throwable

Açıklama: RuntimeException ve alt sınıfları denetlenmemiştir; yakalanması isteğe bağlıdır.

2 İstisnayı kategorisiyle eşleştir

Kavram Anlamı
IOException Denetlenmiş (checked)
RuntimeException Denetlenmemiş (unchecked)
Error Sistem hatası
NullPointerException null nesne hatası

3 NumberFormatException yakala

Soru
try {
  Integer.parseInt(s);
} catch (____ e) {
  System.out.println("Sayı değil");
}
Cevap
try {
  Integer.parseInt(s);
} catch (NumberFormatException e) {
  System.out.println("Sayı değil");
}

Açıklama: NumberFormatException geçersiz sayı dizesini temsil eder.

Başlangıç bölümündeki tüm dersler