Tutarlı, sağlam ve iyi tasarlanmış bir istisna API'sine sahip olmak çok uygundur. İş kurallarını uygulamak için bunu kullanmak da uygun olabilir. Aslında tecrübelerime göre, iş kuralı ne kadar karmaşıksa, bu şekilde ele alınma olasılığı o kadar artar. İstisnaların beklendiği bir sistemi yazmak, yetkili dallanma mantığı yazmaktan daha kolay olmasa da, genellikle kolaydır.
Bu, tek bir cümle ile tarif edilebilecek basit kuralların genellikle hangisine bağlı olarak önleyici veya yetkili bir şekilde uygulanması gerektiğini ifade eder. Bununla birlikte, çok boyutlu olan ve üç veya dörtten fazla faktör gerektiren bir kuralınız varsa (özellikle bu faktörlerin seçimi diğer faktörlerden birine veya daha fazlasına dayandıysa), istisna kodlaması daha sürdürülebilir olabilir. Genellikle bu durumlarda mantık yolunun atılması gereken birçok öncü istisnası olacaktır (eylemin neden gerçekleştirilemediğini kontrol eder) veya (veya tersi) güvenliğe (eylemin yetkilendirildiğini kontrol etmek için) düşme olur ), bazen kontrol edilmesi gereken bazı yetkili birikim mantığı olacaktır (torun / ata kullanılabilirliği, nesnelerin konması gereken öncü durumlar vb.).
Bu tür istisna atma işlemlerinden kaynaklanan bir avantaj, öncül istisnaları projenizin birden çok alanında ayırmanıza ve yeniden kullanmanıza izin vermesidir. (Bu, Unsur Odaklı Programlamanın özüdür.) Bunu yaparak, genel iş kurallarınızın belirli bir yönünü müstakil ve sürdürülebilir bir bileşende kapsüllersiniz. Genel olarak bu bileşenler, atılan hata mesajlarıyla 1-1'e karşılık gelir. (Bazen birkaç farklı istisna getiren bir bileşene sahip olsanız da, neredeyse hiçbir zaman birden fazla bileşenden aynı istisnayı atmamalısınız.)
Kanımca, istisna tabanlı sistemler tasarlamak daha zordur ve tüm N seviyelerinde istisna sürecini oluşturmak zorunda olduğunuz için ilk geliştirme süresi daha uzundur. Ancak bu sistem genellikle daha kararlı hale gelir. 'Başarısız olmayacak' bir sistem tasarlamak asla mümkün olmasa da, istisna tabanlı tasarımın yararı her zaman başarısızlığı beklemenizdir. Çoğu insan için süreç karşı sezgisel olabilir. Yön sormak ve birisinin size tüm sokakları açmamanız gerektiğini söylemesini sağlamak gibi.