Okan Uzun
Okan Uzun Administrator of The Coders, J2EE, Spring Developer | Functional Programming Enthusiast

Java - Checked ve Unchecked Exception


Merhaba arkadaşlar. Yazılarımıza kaldığımız yerden devam ediyoruz :). Bu yazımda da Java’daki Checked Exception ve Unchecked Exception kavramlarından bahsedeceğim.

Konuya girmeden önce Java’daki exception hiyeraşisini bir hatırlayalım.

Hiyeraşiye şöyle bir göz attıktan sonra artık konumuza geçebiliriz.

Unchecked Exception

İsminden de anlaşılacağı gibi derleyici tarafından kontrol edilemeyen exceptionlardır. Derleyici tarafından kontrol edilemedikleri için kodumuz başarıyla derlenmiş olsa bile çalışma zamanında bu hatalarla karşılaşabiliriz.

Unchecked Exceptionlar RuntimeException‘ın alt sınıflarıdır. Bunlardan en yaygınları ArithmeticException , NullPointerException , ClassCastException… gibi exceptionlardır.

Aşağıdaki kod bloğuna bakalım;

1
2
3
4
5
6
7
8
public static void main(final String[] args) { 
   try { 
       FileReader file = new FileReader("example.txt"); 
       file = null; file.read(); 
   } catch (final IOException e) { 
       e.printStackTrace(); 
   } 
}

Yukarıda görüldüğü üzere file nesnemiz null ve program akışı file.read()  komutuna geleceği zaman NullPointerException fırlatacağını rahatlıkla söyleyebiliriz. Fakat NullPointerException bir Unchecked Exception olduğundan dolayı bizim bu durumu belirtmemize gerek yok ve derleyici kodumuzu başarıyla derlememize izin verir dolayısıyla biz bu hata ile ancak çalışma zamanında karşılaşırız.

Checked Exception

İsminden de anlaşılacağı üzere derleyici tarafından kontrol edilen exceptionlardır. Derleyici tarafından kontrol edildikleri için biz bu exceptionları kodumuzda belirtmek zorundayız. Aksi halde derleme işlemini başarıyla tamamlamak mümkün değildir.

Checked Exceptionlar Exception sınıfının alt sınıflarıdır ( RuntimeException hariç). En yaygınları ClassNotFoundException, IOException, SQLException… gibi exceptionlardır.

Şimdi aşağıdaki kod bloklarına göz atalım;

1
2
3
public static void main(final String[] args) { 
    final FileReader file = new FileReader("example.txt"); 
}

Yukarıdaki gibi yazdığımız zaman derleyici tarafından hata alırız ve kodumuz başarıyla derlenmez çünkü belirtmemiz gereken ilgili Checked Exception’ını belirtmedik.

1
2
3
4
5
6
7
public static void main(final String[] args) { 
    try { 
        final FileReader file = new FileReader("example.txt"); 
    } catch (final FileNotFoundException e) { 
        e.printStackTrace(); 
    } 
}

Yukarıdaki gibi yazdığımız zaman kodumuz artık başarıyla derlenecektir çünkü bir Checked Exception olan FileNotFoundException‘ını kodumuzda belirtmiş olduk.

 

Unchecked Exception ve Checked Exceptionlarıyla ilgili anlatacaklarım bu kadar umarım kafanızda herhangi bir soru işareti kalmamıştır. Lütfen yorumlarınızı esirgemeyiniz, bir dahaki yazımda görüşmek üzere :)

 

 

 

comments powered by Disqus