Kontrol Edilen İstisna ve Çalışma Zamanı İstisnası
İstisnalar, normal program akışını bozabilecek özel olay türleridir. İsim istisnası “istisnai olaydan” gelir. Bir istisna atmak, bir istisna nesnesi oluşturma ve onu çalışma zamanı sistemine teslim etme işlemidir. Çalışma zamanı sistemi istisna nesnesini aldığında, çağrı yığını içinde ters sırada (yöntemlerin çağrıldığı) geçerek onu işleyecek birini bulmaya çalışacaktır. Bir istisna işleyici içeren bir yöntem bulursa, çalışma zamanı sistemi başarılı olur. Özel durum işleyici, söz konusu özel durumu resmi olarak işleyebilen bir kod bloğudur. Çalışma zamanı sistemi uygun bir işleyici bulursa, istisna nesnesini işleyiciye iletir. Buna istisna yakalama denir. Ancak, kural dışı durum işlenemezse, program sonlandırılır. Java'da, istisnalar Throwable sınıfından devralınır. İşaretli İstisnalar, derleyici tarafından işlemin gerçekleştirildiği istisnalardır. Çalışma zamanı istisnaları, derleyici tarafından kontrol edilmeyen bir tür istisnalardır.
Kontrol Edilen İstisna nedir?
İşaretli Özel Durumlar ya java.lang.exception sınıfının nesneleri ya da alt sınıflarıdır (java.lang.RuntimeException ve alt sınıfları hariç). Kontrol edilen istisnalar derleme zamanında “kontrol edilir”. Bu, programcının bu istisnaları yakalaması veya atması gerektiği anlamına gelir, aksi takdirde derleme şikayet eder (derleyici hatasına neden olur). Bu nedenle, kontrol edilen birçok istisna programcılar tarafından çok iyi bilinir. Örneğin, IOException ve alt sınıfları istisnalar olarak denetlenir ve programcı bir dosyaya erişme veya değişiklik yapmayla uğraşırken, derleyici tüm olası IOExceptions öğelerinin programcı tarafından halledildiğinden emin olmak için denetler.
Çalışma Zamanı İstisnası nedir?
Çalışma Zamanı İstisnaları java.lang.RuntimeException ve tüm alt sınıflarından oluşur. Teorik olarak, kontrol edilen istisnalarla aynı amaca hizmet ederler ve kontrol edilen istisna gibi atılabilir veya işlenebilirler, ancak bunların kullanımı derleyici tarafından uygulanmaz. Bu nedenle, Çalışma Zamanı özel durumları denetlenmeyen özel durumlar ailesine aittir. NullPointerException, NumberFormatEception, ClassCastException ve ArrayIndexOutOfBoundsException, Java'daki yaygın çalışma zamanı özel durumlarıdır.
Checked Exception ve Runtime Exception arasındaki fark nedir?
Her ne kadar hem kontrol edilmiş istisnalar hem de çalışma zamanı istisnaları bir programın yürütülmesi sırasında istenmeyen bir durum olsa da, farklılıkları vardır. İşaretli özel durum işleme derleyici tarafından zorunlu tutulur, ancak çalışma zamanı özel durumları uygulanmaz. Bu nedenle, kodun derlenmesi için işaretli özel durumların atılması veya işlenmesi gerekir, ancak çalışma zamanı özel durumlarıyla ilgili böyle bir gereksinim yoktur. Sonuç olarak, çalışma zamanı özel durumları hatalarla birlikte denetlenmeyen özel durumlar kategorisine aittir.
İşaretli istisnalar dışında dezavantaj, programcının nasıl yapılacağını bilmese bile bunu ele alması gerektiğidir. Dolayısıyla, programcı orijinali sarmadan yeni bir istisna atarsa, orijinal istisnaya ait yığın izlemesi kaybolur. Bu, çalışma zamanı istisnalarının işe yaradığı yerdir. Tüm çalışma zamanı istisnaları tek bir yerde işlenebildiğinden, programcılar daha az miktarda kod yazabilir. Öte yandan, kontrol edilen istisnaların yakalanması gerektiğinden, programcı için sürpriz yoktur. Belirli bir yöntemle hangi kontrol edilmiş istisnanın atılabileceğini her zaman bilecektir. Bunun aksine, programcının bilgisi olmadan çeşitli çalışma zamanı istisnaları atılabilir.