Bölüm 6 · Simülatör

İstisna Akışı

← Bölüm 6
Java kodu
    Çağrı yığını
    Çıktı (konsol)

    İstisna Akışı

    Amaç: Bir istisna fırlatıldığında hangi satırların atlandığını, istisnanın çağrı yığını boyunca hangi metotlardan geçerek yayıldığını ve try, catch, finally bloklarının hangi sırayla çalıştığını görmek.

    Nasıl kullanılır?

    1. Soldan bir senaryo ve değer ya da sürüm seçin. Adım ▶ / ◀ Geri (klavyede → / ←), Oynat, Sıfırla.
    2. Ortadaki kodda o anki satır vurgulanır; kırmızı satır istisnanın fırlatıldığı yerdir. Sağda yığın aşağıdan yukarı büyür; her çerçevede o metodun içinde bulunduğu blok (try, catch, finally) yazar. Kesik çizgili çerçeve, istisna yüzünden yığından atılmak üzere olan metottur.
    3. Çıktı ne olur? açıkken program çalışmadan önce A, B, C adaylarına bakıp doğru çıktıyı seçersiniz.

    Kurallar

    • İstisna fırlatılınca o bloktaki kalan satırlar çalışmaz. JVM içten dışa doğru, tipi uyan ilk catch bloğunu arar; bulamadığı her metot yığından atılır.
    • finally her durumda çalışır: blok normal bitse de, return ile çıkılsa da, istisna yakalanmadan geçse de.
    • catch blokları yukarıdan aşağı denenir; alt sınıf üst sınıftan önce yazılmalıdır, yoksa derleme hatası olur.
    • Kontrol edilen (checked) istisnalar (IOException gibi) ya yakalanmalı ya da throws ile bildirilmelidir; derleyici bunu denetler. RuntimeException alt sınıfları kontrol edilmeyen istisnalardır.
    • Hiçbir yerde yakalanmayan istisnayı JVM yakalar, izleme listesini (stack trace) standart hata akışına yazar ve programı sonlandırır.
    • try-with-resources kaynakları açılış sırasının tersiyle kapatır; kapanış, catch ve finally bloklarından önce olur.

    Her senaryonun her sürümü javac --release 8 ile derlenip Java 8 ve Java 21'de çalıştırılmıştır; gösterilen çıktılar, izleme listesi satır numaraları ve derleyici iletileri bu çalıştırmalardan alınmıştır.

    İlgili sunum: Bölüm 6 · Hata Ayıklama ve İstisnalar (try-catch Akışı, finally ve return, try-with-resources, Kontrol Edilen İstisna, Yayılım).