Bence servis müşterilerinizin kim olduğu önemli bir faktör.
Hizmet katmanınız yalnızca kendi projenizdeki katmanlar arasındaki mimari bir sınır ise ve hizmet müşterisi aynı güven aleminde ise, işleri rahatlatmak için tamamdır ve denetlenmeyen istisnaların denetleyici katmanına veya hizmet istemcisine iletilmesini sağlayın.
Ancak, halka açık kod için; üçüncü taraf veya müşteri tarafından tüketilen servis, kontrol edilmeyen istisnaları, başta güvenlik kaygıları olmak üzere, ikincisi gevşek bağlantı ve temiz soyutlama için hizmet odaklı bir istisna ile sarmak daha temiz olduğunu düşünüyorum.
Bir veri katmanı istisnası hiçbir zaman, doğrudan bir web uygulamasının son kullanıcısına gidemez . Potansiyel olarak şemanız, sorgularınız, satır numarası bilgileriniz, değişken veya fonksiyon isimleriniz gibi dahili bilgiler içerir. Son kullanıcı istisnaları güvenli bir ortamda sterilize edilebilir.
Harici bir servis istemcisi, uygulama detaylarınızla ilgilenmez ve böcek veya çevre sorunları olduğu için denetlenmeyen istisnaları hiçbir şekilde kaldıramaz. Güvenli uygulamalarda veritabanı hataları OracleException - ORA-01234 - ...
, eklenecek 3. tablo olabilir , ancak çoğaltmak için yeterince güvenli değildir . Müşterinin işleyebileceği kontrol edilmiş / beklenen istisnalar ile ilgilenmesine ve diğer her şeyi potansiyel bir hata raporu olarak ele almasına izin verilmelidir. Hizmet sözleşmeniz atomik, tutarlı, işlemsel bir soyutlama olmalıdır. İstisna hakkında hiçbir şey yapamıyorsa, geriye kalan tek yararlı şey size bir hata raporu vermektir.. İstisnayı günlüğe kaydetme yeteneğine zaten sahipsiniz, öyleyse neden son kullanıcınızı ayrıntılarla yüklüyorsunuz? Uygulamanız izlenebilir, böylece kullanıcılar bunları bildirmeden önce denetlenmeyen istisnalar hakkında zaten bilgi sahibi olursunuz.
İstisnaları yemekten hiçbir zaman sorun yok , kontrol edilen istisnaların hayranı değilim ama genel ürünün yapısına uygun bir plan yapmayı tercih ediyorum.