Java’da Error Handling (Do-Try-Cathc) İstisnalar || Hata Ayıklama İşlemi

Programla dillerinde aslında hep gördüğümüz bir durum.Bütün programlama dillerinde var olan bir kavram.Try-Catch yani hata ayıklama yöntemi.

Hatalar Nasıl Oluşur?

Öncelikle hatasız kul olmazzz….

Örnek vermek gerekirse son kullanıcından bir input almak istediğimiz de kullanıcı input vermeden (veya yanlış bir input değeri girerek) yazılmış olan program parçacığını crash etmesine sebep verebilir.Bu tarz durumlarda mutlaka girilen değeri kontrol etmek gerekir.Peki biz kontrol işlemlerini standart if blokları ile yapabilir miyiz? Evet yapabiliriz yaptığımız durumlar var .Fakat Error Handling özelliğimiz standart ilkel yapılı if bloklarından çok daha gelişmiş bir yapıdır.Ayrıca if blokları sadece 1 kez çalışır …

Şimdi hata örneklerimize bakalım:

Şimdi hataları öncelikle 3 grupta inceleyebilirim.

  • Logical Errors (Mantık Hataları)
  • Yazılan kodların hataları.
  • Run Time Errors (Çalışma Zamanı Hataları)

Logical Errors (Mantık Hataları)

Mantıksal hatalarda kurduğumuz algoritma yapısında bir sorun olduğunun göstergesidir.Önce vermek gerekirse bir hesap programında yanlış sonuç üretilmesi bunun en güzel örneğidir.Bu yüzden adım adım kodları ve değişkenlerin aldıkları canlı değerleri incelemek gerekir.

O yüzden her şey başı algoritma değil kahvedir..

Yazılan kodların Hataları:

Ben hata yapmam diyenlere gelsin.. Burada aslında syntax yanlış olsa bile zaten derleyici sizi uyarıcaktır ve program derlenmeyecektir.Lakin ki bazen birbirine çok benzeyen kod parçacıkları olabilir.Bu kod parçacıklarının sonucundan bambaşka bir sonuç çıkabilir.Bu yüzden dikkatli olmak gerekir.

Run Time Errors (Çalışma Zamanı Hataları)

En çok karşılaştığımız hata türleridir.Aslında kötü kod yazmaktanda bu sonuçla karşılaşabilirsiniz. Bu hata türünde programı koşturmaya başladığımız zaman beklemeyen bir durum ile karşılaşıldığında oluşan hata türüdür.Java üzerinde Run-Time Errors hata türleri exception (istisna) kelimesi ile ifade edilir.Bizi burada ilgilendiren Run-Time Errors kısmı .

Şimdi geldik hata ayıklama komutlarına:

  • Try-catch
  • throw
  • throws,
  • finally

Try-Catch

Java dilinde temel hata ayıklama kodunu temsil eder.Try ve catch birlikte kullanılır.Aynı yapıda seçim işlemi olsun istiyorsak finally deyimini kullanabilirsin. Eğer isterseniz catch ile kullanmadıysan finally komutunu kullanabilirsiniz.Yani burda try komutunun tek başına kullanılamaz .Bir işlemin her durumda hata olsun veya olmasın farketmez kesin olarak yapılmasını istiyorsak finally deyimini kullanırım.

Dipnot:Try catch içinde tanımlama yaparken kesinlikle alt sınıfta ki hatalar daima üst sınıflardan hatalardan önce yazılmalıdır.Bunun sebebi catch deyimi çalışırken önce üst sınıftan başlar sonra alt sınıfa geçer.Eğer üst sınıfan bir hata bulduysa o hatayı atar ve altta ki sınıflara ulaşamaz.

Ex1:

  • Şimdi maaş miktarını girdikten sonra zamlı maaşı bize veren basit bir program yapalım:

Şimdi programın çökmesine sebep olalım:

  • Şimdi burada program bir Int deger beklerken bir farklı bir veri girdik ve program crash oldu.

Şimdi bir hata ayıklama yöntemi ekleyelim:

  • try kısmına hata alınabilen kod bloklarını ekledim.
  • catch kısmına ise hata alındığı zaman olucak işlemleri yazdım.
  • catch içinde ise Exception tipinde bir değişken (hata1 isminde) tanımladım.Exception özel hata ayıklama türü bunun ayrıntısına daha sonra değineceğiz.

Hata Mesajlarını Ekrana Basmak

Tamam programı crash ettik ama bu hatanın sebebi ne? İşte bu noktada hataları ekrana basan bazı methodlardan fayadalanırız.Bu print methdoları bize tam hatayı göstermezse bile bize mutlaka bir yol gösterecektir.Örneğe devam edelim.

Öncelikle şunu bilmemiz gerekir.Aslında bütün hatalar Throwable denen sınıfın methodlarını destekler.Temel olarak hataları ekrana basan getMesseage() , toString, printStackTrace() gibi Log kayıtlarını bu hataları gösteren bazı komutlardır.

  • getMesseage() , toString, olulan hatayı String olarak döndürür.
  • printStackTrace ise oluşan hataları ve oluşan hataya kadar ki oluşan hatanın kod satırına kadar bize döndürür.

Mevcut örneğe devam:

  • Klavye üzerinde gg değerini gönderdik.İlk hata null döndüğü için hata aldığımı gördük.
  • ikinci hata ise hatanın giriş yönteminde olduğunu bilgisini verdi.(InputMismatchException)
  • pirntStack ise Allah ne verdiyse veriyor mübarek 🙂 Hatanın 31. satırda olduguna kadar..

Birden Fazla Hata Çıkarsa ?

Her zaman söylemişimdir:

Hayat if ise sende bir else’sin güzelim.. by gpupdateforce Anıl Baran

Birden fazla hata oluşma ihtimali yüksektir.Burada ihtiyaç halinde tıpkı if-else mantısı gibi hataları ayırabiliriz.Hatta bu hatalar dışında tahmin edemediğimiz bazı istisnalarda özel durumlarda ne yapılması gerekir onları da ayarlayabiliriz.Ondan önce finally deyimine bakalım:

finally

  • finally ile hata ayıklamdan ayrılırken hata olsun veya olmasın çalışması gereken kodlar içindir.Hata alın veya almayın mutlaka önce finally bloguna bakılır orada ki işlemlerimiz tamamlandıktan sonra alt satırlara geçer….
  • Eğer finally kullanmazsak o öyle dümdüz devam eder 🙂

Devamı gelicek…

Leave a Reply

*