作爲一名優秀的程序員和代碼審查人員,當我看到開發人員發現「Exception」異常時,我總是感到不安。我打算建議C#在Java中添加「throws」子句,但在閱讀Anders Hejlsberg訪談(http://www.artima.com/intv/handcuffs.html)之後,我明白了它爲什麼不在那裏。我想建議canthrow聲明。該canthrow聲明將具有以下屬性我們可以在C#中獲得一個canthrow語句嗎?
- canthrow聲明將在方法聲明,並列出了例外情況,這種方法拋出。
- canthrow會向調用方法或intellisense報告可拋出的異常,以及調用的方法可能拋出並且不在本地處理的任何異常。
- canthrow is not contractual,所以版本控制不是問題。
這裏的想法是,大多數開發人員想要捕捉並處理適當的異常,但他們根本不知道它們是什麼。如果我們有辦法在設計時檢查這些方法,開發人員將更有可能添加和處理相關的異常,並讓未處理的異常出現。
現在作爲最後的想法,您可能會說這可能都是通過Intellisense使用反射來完成的,但是這會返回所有可能的異常。圖書館的開發者可以強調預期由來電者處理的例外情況。
您認爲如何?