Sunday, July 6, 2014

İstisnai Durum (Exception) Nedir ve Java'da Yaygın Karşılaşılan İstisnai Durumlar Nelerdir?

"Exception" kelimesini İstisna veya İstisnai Durumu olarak tercüme edebiliriz.
Oracle'a göre istisnanın açıklaması şöyle:
"Bir programın çalışması sırasında ortaya çıkan ve programın normal komut akışını bozan bir durumdur."

İstisnaların "throw" ile atılması, "try/catch/finally" ile yakalanması gerekmektedir. Kontrol altına alınmamış istisna durumları RuntimeException olarak adlandırılır.

Java'da yaygın olarak karşılaşılan istisnai durumlar ve açıklamaları aşağıdadır. Yaptığınız testlerde bu istisna durumlarına özellikle dikkat etmeniz faydalı olur.
(Tam liste için http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html adresine bakabilirsiniz.)

ArithmeticException 
İstisnai bir aritmetik durum ortaya çıktığında atılır.

ArrayIndexOutOfBoundsException 
Bir diziye (array) geçerli olmayan bir indeks numarası ile erişilmeye çalışıldığında atılır.

ArrayStoreException 
Bir nesne dizisi içine yanlış tipte bir nesne kaydedilmeye çalışıldığında atılır.

ClassNotFoundException 
Bir uygulama bir sınıfı karakter dizisi ismi ile (Class sınıfındaki forName metodunu kullanarak) yüklemeye çalıştığında atılır.

IllegalArgumentException 
Bir metotun geçerli veya uygun olmayan bir argümanı geçirmeye çalıştığını belirtmek için atılır.

IllegalStateException 
Bir metot geçerli veya uygun olmayan bir zamanda çağrıldığında atılır.

IllegalThreadStateException 
Bir iş parçacığının, talep edilen işlem için uygun bir durumda olmadığını belirtmek için atılır.

IndexOutOfBoundsException 
Herhangi bir tipteki (dizi, karakter dizisi, veya vektör gibi) indeksin sınırları dışında olduğunu belirtmek için atılır.

InterruptedException 
Bir iş parçacığı ("thread") beklerken, uyurken veya diğer türlü bir şekilde meşgulken, bu iş parçacığına iş yaparken veya işini bitirmeden müdahale edilirse atılır.

NegativeArraySizeException
Uygulama negatif genişlikte bir dizi oluşturmaya çalıştığında atılır.

NoSuchMethodException 
Belirli bir metot bulunamadığında atılır.

NullPointerException 
Bir uygulama, bir nesnenin gerektiği bir durumda "null" kullanmaya çalıştığında atılır.

NumberFormatException 
Uygulamanın bir karakter dizisini nümerik tiplerden birine dönüştürmeye çalıştığı ama karakter dizisinin uygun formata sahip olmadığını belirtmek için atılır.

RuntimeException 
RuntimeException, Java Sanal Makinası'nın normal çalışması sırasında atılabilecek diğer istisnaların bir süpersınıfıdır.

SecurityException 
Güvenlik yöneticisii tarafından bir güvenlik ihlali olduğunu belirtmek için atılır.

StringIndexOutOfBoundsException 
Bu istisna "String" methodları tarafından, bir indeksin ya negatif veya karakter dizisinin uzunluğundan büyük olduğunu belirtmek için atılır.

UnsupportedOperationException 
Talep edilen işlemin desteklenmediğini belirtmek için atılır.

Ayrıca, aşağıda belirtilen durumlarda en sık karşılaşılan istisnalar listelenmiştir:

Casting: ClassCastException
Arrays: ArrayIndexOutOfBoundsException, NullPointerException
Collections: NullPointerException, ClassCastException
IO: java.io.IOException, java.io.FileNotFoundException, java.io.EOFException
Serialization: java.io.ObjectStreamException
Threads: InterruptedException, SecurityException, IllegalThreadStateException

Şu video da oldukça faydalı: How to handle 10 common Java Exceptions

No comments: