Exception hiyerarşisi
- Java kursu
- Başlangıç
- Ders 109/116
- 5 dk
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];
// ArrayIndexOutOfBoundsExceptionBu 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
public class Main {
public static void main(String[] args) {
String s = "abc";
// parseInt'i dene, NumberFormatException yakala, mesaj yaz
}
}Örnek çözüm
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
try {
Integer.parseInt(s);
} catch (____ e) {
System.out.println("Sayı değil");
}
try {
Integer.parseInt(s);
} catch (NumberFormatException e) {
System.out.println("Sayı değil");
}
Açıklama: NumberFormatException geçersiz sayı dizesini temsil eder.