Java ile Kullanıcı Tanımlı Exception Oluşturma

Java ile Kullanıcı Tanımlı Exception Oluşturma

Herkese merhabalar, Bu yazımızda sizlere Java programlama dilinde kendi oluşturduğumuz sınıf için Exception handling tanımlamayı anlatacağım. Bu sınıftan türetilen sınıflarda bu özelliği kullanacağız.

Başlayalım...

İlk olarak exception nedir
Exceptionlar programın çalışması esnasında (runtime boyunca) meydana gelen anormal durumlardır. Exceptionlar hata değillerdir. Programda hata oluşursa program direk olarak kapanır fakat Exception oluşursa program tarafından idare edilebilir ve durdurulma önlenebilir.

Exception Handling nedir
Exception Handling ise programın çalışması esnasında meydana gelen anormal bir durumun kontrol altına alınarak programın durdurulmasını önlemektir. Bu anormal durum, alınması gereken verinin alınamaması, ekleme işleminin yapılamaması vb durumlar olabilir. Bu durumlarda programın durdurulması önlenerek geliştiricinin belirttiği işlemler gerçekleştirilir.

Java programlama dili bizlere türetilen classlarda, temel alınan sınıfta oluşabilecek yapılan işleme dayalı exception oluşturabilme olanağı sağlamaktadır. Bu sayede türetilen sınıflara, problemin ne olduğu konusunda daha iyi fikirler verilebilmektedir.

İlk olarak basit bir örnek ile nasıl Exception oluşturulur onu görelim.

İlk olarak bir Java sınıfı oluşturup, oluşturulan bu sınıfın Exception sınıfından kalıtım almasını (Inheritance) sağlamalıyız.

class TheSimpleException extends Exception{
    public TheSimpleException(String exceptionMessage) {
        super(exceptionMessage);
    }
}
Yukarıda oluşturulan Exception sınıfımızı basit bir şekilde çağıralım ve try catch bloğu kullanarak hata yakalama adımlarını izleyelim.

public class UserDefinedExceptionExample {
    public static void main(String[] args) {
        try
        { 
            throw new TheSimpleException("Anormal bir durum oluştu..."); 
        } 
        catch (TheSimpleException ex) 
        { 
            System.out.println("catch bloğu"); 
            System.out.println(ex.getMessage()); 
        } 
    }
}
Program çıktısı aşağıdaki gibi olacaktır.

catch bloğu
Anormal bir durum oluştu...

Burada catch bloğu içerisinde anormal durum mesajını string olarak aldık ve işlemleri yaptık. Hata mesajını direk olarak exception sınıfından kalıtım aldığımız için getMessage ile gösterebilmekteyiz.

Eğer kendimize ait olarak oluşturduğumuz exception sınıfı için başka işlemler istiyorsak veya başka değerler ile de çalışabilmesini istiyorsak aşağıdaki kod bloğunu incelemenizi öneririm.

Bu sınıf içerisinde ek olarak birde string değerin yanında Enum değer alabir constructor yazdık ve Exception sınıfı içerisindeki Enum ı kullanarak hata mesajı oluşturduk. Aynı zamanda ek olarak bir kayıt oluşturulduğunu bildiren bir fonksiyon yazıldı.

class TheSimpleException extends Exception{
    public TheSimpleException(String exceptionMessage) {
        super(exceptionMessage);
    }
    
    public TheSimpleException(String exceptionMessage, ErrorCodes errorCode) {
        super(exceptionMessage + "" + errorCode);
        System.out.println("Anormal durum log kaydı yapıldı...");
    }
    
    public static enum ErrorCodes{
        LittleException,
        MediumException,
        HardException
    }
}
Program çıktısı

Anormal durum log kaydı yapıldı...
catch bloğu
Anormal bir durum oluştu...MediumException

Eğer program içerisinde derleme esnasında oluşacak bir problemin bildirilmesini istiyorsak RuntimeException sınıfından kalıtım alınarak türetilecek bir sınıf kullanılabilmektedir. Burada program derleme esnasında bir problem ile karşılaştığında hata verecek ve çıktıdaki görselde görüldüğü üzere program derlenmeyecektir. Eğer Runtime esnasında bu durum meydana gelirse RuntimeException olarak bildirilecektir.

Aşağıdaki kod bloğunda bu örneği görebiirsiniz:

class TheDetailedException extends RuntimeException{
    public TheDetailedException(String exceptionMessage) {
        super(exceptionMessage);
    }
    public TheDetailedException(String exceptionMessage, Throwable cause) {
        super(exceptionMessage, cause);
        System.out.println("Durum sebepleri : " + cause.getMessage());
    }
}

public class UserDefinedExceptionExample {
    public static void main(String[] args) {
        try 
        { 
            throw new RuntimeException("Temel hata burada belirtilecek");
        } 
        catch(RuntimeException err) {
                throw new TheDetailedException( "Detailed Exception hatası : ", err);
        }
    }
}
Programın çalıştırılması esnasında meydana gelecek bir hatadır ve RuntimeException oluşturacaktır. Building Hatası

Bu yazımızda kullanıcı tanımlı Exception sınıflarını görmüş olduk.

Örnek java dosyasına Github üzerinden aşağıdaki link ile erişebilirsiniz:
https://github.com/thecodeprogram/TheSingleFiles/blob/master/UserDefinedExceptionExample.java

Burak Hamdi TUFAN


Tags


Share this Post

Send with Whatsapp

Post a Comment

Success! Your comment sent to post. It will be showed after confirmation.
Error! There was an error sending your comment.

Comments

  • There is no comment. Be the owner of first comment...