Sponsor Reklam 


19.09.2008 (20:25)

 İstisna Yönetimi, Exception 
Java tasarımı gereği çalışma zamanı hatası (runtime error) ile karşılaşılmayı büyük ölçüde önler. Hataları bulmamızı kolaylaştırır. Çalışma zamanı hatalarını da try - catch - throw - throws - finally anahtar sözcükleri ile, istisna yönetimi mekanizması ile denetim altına alır. Bu hatalara yine çalışma zamanında müdahale edilmesine olanak sağlar.

try bloğu hatayı içerebilecek kodu bulundurur. Eğer bu blok içinde bir istisna ile karşılaşılırsa catch bloğu tarafından yakalanmaya çalışılır. Eğer hata yakalanmamış ise bu istisna çağıran metoda veya sınıfa fırlatılır ve orada yakalanması beklenir. Hiç bir yerde yaklanmayan istisna hata kodu olarak dönülerek program sonlanır.

Örnek bir try - catch bloğu:

// Bu metot integer bölme işlemi yapar.
// Paydanın sıfır olması durumunda sonucu sıfır döndürür.
public int hesapla (int a, int b) {
  int result;
  try {
    result = a / b;
  } catch (ArithmeticException ae) {
    result = 0;
  }
  return result;
}

İstisna yaklama bloğunda birden fazla catch yapılabilir:

try {
  // İstisnaya yol açabilecek kod
} catch (ArithmeticException ae) {
  // Sıfıra bölme hatası yakalanır
} catch (ArrayIndexOutOfBoundsException e) {
  // Dizi sınırlarını aşmadan kaynaklanan istisna yakalanır
} catch (Exception e) {
  // Herhangi bir yakalanamayan istisna varsa onu yakalar
  // Hata satırını yazdıralım
  e.printStackTrace();
}

Tüm istisna sınıfları Throwable sınıfını genişletir, yani onun alt sınıfıdır. Throwable'ın bir alt sınıfları Exception ve Error sınıflarıdır. Kendimiz Exception sınıfını genişleterek kendi istisna sınıflarımızı oluşturabiliriz. Ancak Error sınıfı bellek yetersizliği, yığın taşması vs. hataları içerir ve programımız tarafından yönetilemez.

throw anahtar sözcüğü ile manuel olarak istisna fırlatılabilir:

throw new NullPointerException("Deneme");

Eğer bir metot yönetemeyeceği bir istisna içerebilecekse kendisini çağırana bu istisnayı fırlatabilmesi için throws anahtar sözcüğü tanımlanmıştır:

package kodcu.net;

public class IstisnaOrnek {

  public static void main(String[] args) {
    try {
      run();
    } catch (RuntimeException e) {
      System.out.println("Çalışma Zamanı Hatası!");
    }
  }

  // İstisnaya neden olan ve yönetmeyen metot
  public static void run()  throws RuntimeException {
    throw new RuntimeException();
  }
}

RuntimeException sınıfı sıfıra bölme, dizide indis aşımı yapma gibi birçok çalışma zamanı hatasını denetleyebilen bir sınıftır.

İstisna yönetiminde try, catch blokları gibi bir de finally bloğu vardır. finally anahtar sözcüğüne şu yazıda değinilmiştir.
Imza: admin








Yazilar kaynak gosterilmeden kopyalanamaz © www.kodcu.net // Twitter