Anasayfa / Java / Javada Try, Catch ve Finally Bloklarının Kullanımı
java

Javada Try, Catch ve Finally Bloklarının Kullanımı

Programcıların en çok canını sıkan konuların başında yazılım hatalarının yakalanması ve yönetilmesi gelmektedir. Çünkü iyi bir programcı oluşabilecek her hatayı önceden kestirip, bu hataları önlemeye yönelik tedbirler almak zorundadır. Java’da hata yönetiminin temellerini try, catch ve finally blokları oluşturur.

Blokların kullanımını kısaca anlatmak gerekirse; istisnai bir durum oluşabileceğini öngördüğümüz kodları try bloğu içine alırız. Eğer böyle bir durum oluşursa program kırılmak yerine hatayı bloktan dışarı fırlatır. Bu fırlatılan hata catch blokları tarafından yakalanır ve makul bir şekilde yönetilir. Finally bloğunda ise try veya catch bloklarından sonra mutlaka çalıştırılmasını istediğimiz kodlar yer alır. Finally bloğunun kullanılıp kullanılmaması durumu programcının isteğine bırakılmıştır.

Bir istisna yönetim bloğunun genel yapısı şu şekildedir.

 Konunun daha iyi anlaşılabilmesi için bir örnek üzerinden anlatalım. Klavyeden girdiğimiz iki sayıyı birbirine bölen ve sonucu ekranda gösteren basit bir uygulama yapalım.

Evet kullanıcıdan aldığı ilk sayıyı, ikinci sayıya bölen ve sonucu gösteren basit bir program yaptık. Kodlarımızın çalışma şeklini inceleyelim.

1.durum: Kullanıcının iki sayı girdiğini varsaydığımız durumda, programımız hatasız çalışır. Sırasıyla, hesaplanan sonuç değişkeni ekrana yazdırılır, catch bloğu çalıştırılmaz, finally bloğundaki mesaj ekrana yazdırılır ve program kapanır.

2.durum: Kullanıcının iki sayı yerine yanlışlıkla farklı değerler girdiği programda ise yine program hatasız çalışır. Sırasıyla kullanıcı yanlış değer girip “Enter”a bastığı anda direk catch bloğuna atlanır, hata mesajı ekrana yazdırılır, finally bloğundaki mesaj ekrana yazdırılır ve program kapanır.

Bu iki durumla ilgili ekran çıktıları aşağıdaki gibi olacaktır.

try catch
Hata Yakalama Ekran Çıktısı

Catch bloğu içerisindeki “InputMismatchException” istisnai durumunu inceleyelim. Bu istisnai durum kullanıcıdan gelen verinin atanmaya çalışan değişken türüne uymadığı durumlarda meydana gelir.

Buna benzer en çok karşınıza çıkacak hata türleri şunlardır.

ArithmeticException: Sıfıra bölme gibi aritmetik hatalar

ArrayIndexOutOfBoundsException: Dizinin sınırları dışına çıkma hatası

NullPointerException: Null değerinin geçersiz kullanılması

FileNotFoundException: İstenen dosyanın bulunamaması hatası

En çok karşılaşacağınız hata sınıflarını yazmaya çalıştım. Fakat bunlardan başka onlarca hata sınıfı bulunmaktadır. Hepside Exception sınıfından türetilmiştir.

Bir Hatanın Detaylarını Görüntülemek

Throwable, bir istisnanın açıklamasını içeren bir karakter katarı döndürmek için toString() metodunu ezer ve açıklamayı argüman olarak döndürür. Bu şekilde println metoduyla açıklama ekrana yazdırılabilir. Bir istisnai durum yakalandığı zaman, bu hatayla ilgili teknik bilgileri görmek için catch bloğumuzu aşağıdaki gibi değiştirebiliriz.

 Bu örnekteki hata açıklaması, çok yararlı olmasa da özellikle yazılımcılara hata ayıklama aşamasında önemli katkı sağlamaktadır.

Birden Çok Catch İfadesi Kullanımı

Bazen try içerisindeki kod bloğunda, birden çok hata oluşabilecek durum meydana gelebilir.  Böyle durumları kotarmak için birden fazla catch cümleciği arka arkaya kullanılır. Bir hata meydana geldiği anda, her catch ifadesi sırasıyla denetlenir ve istisnanın tipiyle uyuşan catch cümleciği çalıştırılır.

Yukarıda yaptığımız örneği aşağıdaki gibi tekrar yazalım.

Örnek incelendiğinde 2 farklı catch bloğunun yer aldığı görebilirsiniz. İkinci catch bloğu bölen sayının 0 olması durumda fırlatılan hatanın yakalanması için oluşturulmuştur. Try bloğu içerisinde hangi hata türü oluşmuşsa fırlatılan hata o catch bloğu tarafından yakalanır ve yönetilir.

Birden fazla catch ifadesi kullanıldığında en üst catch ifadesi Exception türünde olursa, alt satırlardaki catch ifadeleri gereksiz olur. Çünkü diğer istisnaların tümü Exception sınıfından türetildiği için tüm hatalar en üstteki catch bloğu tarafından yakalanır.

Çok nadir olsa da bazı durumlarda iç içe try-catch ifadeleri de kullanılabilmektedir.

Konuyla ilgili sorularınızı bana iletebilirsiniz. Hiç hata vermeyen programlar yazmanız dileğiyle…

İlginizi Çekebilir!

maven nedir

Maven Nedir, Nasıl Kurulur?

Maven, Java ile proje geliştirenlerin vazgeçilmezlerinden biri olmakla birlikte proje geliştirme adımlarını basitleştirmek için kullanılmaktadır. ...

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir