Programlama ve sistemleri geliştirmek için harcadığım yıllarda, söz konusu modeli faydalı bulduğum sadece iki durum var (her iki durumda da, atılan istisnaların günlüğe kaydedilmesini de içermekteydi, düz yakalama ve null
iyi bir uygulama olarak geri dönmeyi düşünmüyorum) ).
İki durum aşağıdaki gibidir:
1. İstisna istisnai bir durum olarak değerlendirilmediğinde
Bu, bazı veriler üzerinde bir işlem yaptığınızda, fırlatabilecek, fırlatabileceğini ancak uygulamanızın çalışmaya devam etmesini istediğinizden emin olabilirsiniz çünkü işlenmiş verilere ihtiyacınız yoktur. Onları alırsanız, iyidir, almazsanız, aynı zamanda iyidir.
Bir sınıfın bazı isteğe bağlı özellikleri akla gelebilir.
2. Daha önce bir uygulamada kullanılan arayüzü kullanarak bir kütüphanenin yeni (daha iyi, daha hızlı?) Bir uygulamasını sunarken
İstisnalar atmayan, ancak null
hatayla sonuçlanan eski bir kütüphaneyi kullanan bir uygulamanız olduğunu hayal edin . Böylece, kütüphanenin orijinal API'sini hemen hemen kopyalayan ve bu yeni (hala atmayan) arayüzü uygulamanızda kullanıyor ve null
çekleri kendiniz kullanıyorsunuz.
Kütüphanenin yeni bir sürümü veya belki de aynı işlevi sunan tamamen farklı bir kütüphane gelir, ki bunlar yerine null
s, istisnalar atar ve onu kullanmak istersiniz.
İstisnaları ana uygulamanıza sızdırmak istemezsiniz, bu nedenle bu yeni bağımlılığı sarmak için onları oluşturduğunuz adaptöre bastırıp günlüğe kaydedersiniz.
İlk durum bir sorun değil, kodun istenen davranışı. Bununla birlikte, ikinci durumda, her yerde null
kütüphane adaptörünün geri dönüş değeri gerçekten bir hata anlamına gelirse , bir istisna atmak ve API'yi kontrol etmek yerine yakalamak, API'yi yeniden düzenlemek null
iyi bir fikir olabilir (ve genellikle kod açısından).
Kişisel olarak istisna baskısını sadece ilk vaka için kullanıyorum. Ben sadece ikinci vaka için kullandım, uygulamanın geri kalanının null
s yerine istisnalar ile çalışmasını sağlayacak bütçemiz yoktu .