Veysel Uğur KIZMAZ

Java Exception Handling

04.04.2012Okunma Sayısı: 7431Kategori: Java

 Olusturdugumuz yazilimlarda en önemli nokta, yazilimin kusursuz olarak çalismasidir. Diger bir deyisle hatalardan arindirilmis olarak çalismasidir. Tanimladiginiz bir degiskenin, üst siniri asmasi, tür uyusmazligi vb. islemler hiç hos olmayan hata mesajlari verecektir. Bu amaçla olusabilecek hatalara karsi yazilimimizi güvenli hale getirmek gerekmektedir. Bunu saglayabilmek için de Java içerisinde tanimli hata kontrol bloklari ve siniflari yer almaktadir.

Örneğin 3 elemanlı bir dizinin 4. elemanına erişmeye çalışalım
 
      public static void main(String[] args) {
            int[] elemanlar = {0,1,2};
            for(int i = 0; i < 10; i++){
                  System.out.println(elemanlar[i]);
            }
      }
 
Çal

ıştırdığımızda aşağıdaki hata mesajını alacağız.
 
 
 
Peki bu hatayi nasil önleyecegiz?
 
      public static void main(String[] args) {
            try
            {
                  int[] elemanlar = {0,1,2};
                  for(int i = 0; i < 10; i++){
                        System.out.println(elemanlar[i]);
                  }
            }
            catch(Exception hata){
                  System.out.println("Hata : " + hata.toString());
            }
      }
 
Kodda da görüldügü gibi, çalismasini istedigimiz kodlari try blogunun içine yerlestiriyoruz. Herhangi bir hata ile karsilastigimiz taktirde yapmasini istediklerimizi de catch blogu içerisine yerlestiriyoruz.
Projemizi çalıştıralım.
 
Artık hatayı kontrolümüz altına alabiliyoruz. Hata sınıfımızın ArrayIndexOutOfBoundsException olarak uyarı vermektedir. Bu sebeple bu hatayı yakalamak için kodumuzda catch bloğundaki Exception yerine  ArrayIndexOutOfBoundsException yerleştirebiliriz.
 
      public static void main(String[] args) {
            try
            {
                  int[] elemanlar = {0,1,2};
                  for(int i = 0; i < 10; i++){
                        System.out.println(elemanlar[i]);
                  }
            }
            catch(ArrayIndexOutOfBoundsException hata){
                  System.out.println("Hata : " + hata.toString());
            }
      }
 
Çalıştırdığımızda aşağıdaki gibi (aynı hata sonucu) ekran alacağız.
 
 
 
 
try-catch işlemleri tamamlandıktan sonra yapılması gereken işlemler varsa bunları da finally bloğunda belirliyoruz.
 
      public static void main(String[] args) {
            try
            {
                  int[] elemanlar = {0,1,2};
                  for(int i = 0; i < 10; i++){
                        System.out.println(elemanlar[i]);
                  }
            }
            catch(ArrayIndexOutOfBoundsException hata){
                  System.out.println("Hata : " + hata.toString());
            }
            finally
            {
                  System.out.println("Bitti");
            }
      }
 
 
Veysel Uğur KIZMAZ
Bilgisayar Mühendisi
veysel@ugurkizmaz.com
www.ugurkizmaz.com
twitter: @vukizmaz