16 Ağustos 2022 Salı

Business Exceptions

Giriş
Şöyle bir kural var deniliyor
Try not to create new custom exceptions if they do not have useful information for client code.
Ancak ilave bilgi içermiyor diye sadece düz Exception fırlatmak bence doğru değil. Sebebi şöyle. Çünkü  düz exception fırlatırsak bu durumda JVM'den veya bizim kodumuzdan gelen exceptionları ayırt edemiyoruz.  Bu yüzden boş ta olsa kendi Business Exception ata sınıfımızı tanımlamakta fayda var
Do not throw just an Exception! It means you have to catch Exception, which in turn means you also catch all RuntimeExceptions, therefore all NPEs etc!
Peki Neden Ayırt Etmek Lazım?
Örnek
Bir seferinden şöyle bir şey gerekmişti. Kod hem veri tabanına hem de farklı bir yere veri yazıyordu. Eğer her hangi bir hata varsa işlemi iptal etmek gerekiyordu. Bir tane AbortException tanımlandı. Bu sınıf şöyledi. İlave bir üye alan veya bilgi içermemesine rağmen, işlemin iptal etmesini sağlıyordu.
public class AbortException extends Exception {}
Dolayısıyla illa ilave bilgi içermersine yani şöyle olmasına gerek yok
public class DuplicateUsernameException extends Exception {
  public DuplicateUsernameException (String username){....}
  public String requestedUsername(){...}
  public String[] availableNames(){...}
}

Kütüphaneler
Bir çok kütüphane, plugin kendi exception hiyerarşisini sunuyor ve geliştiricilerin bu hiyerarşiden kalıtmasını istiyor
Örnek
Bir keresinde şöyle bir kod vardı
public class ServiceException extends Frwxception {
  ...
}


Hiç yorum yok:

Yorum Gönder