2010-03-04 94 views
0

作爲一名優秀的程序員和代碼審查人員,當我看到開發人員發現「Exception」異常時,我總是感到不安。我打算建議C#在Java中添加「throws」子句,但在閱讀Anders Hejlsberg訪談(http://www.artima.com/intv/handcuffs.html)之後,我明白了它爲什麼不在那裏。我想建議canthrow聲明。該canthrow聲明將具有以下屬性我們可以在C#中獲得一個canthrow語句嗎?

  1. canthrow聲明將在方法聲明,並列出了例外情況,這種方法拋出。
  2. canthrow會向調用方法或intellisense報告可拋出的異常,以及調用的方法可能拋出並且不在本地處理的任何異常。
  3. canthrow is not contractual,所以版本控制不是問題。

這裏的想法是,大多數開發人員想要捕捉並處理適當的異常,但他們根本不知道它們是什麼。如果我們有辦法在設計時檢查這些方法,開發人員將更有可能添加和處理相關的異常,並讓未處理的異常出現。

現在作爲最後的想法,您可能會說這可能都是通過Intellisense使用反射來完成的,但是這會返回所有可能的異常。圖書館的開發者可以強調預期由來電者處理的例外情況。

您認爲如何?

回答

1

我不確定它在上面的文檔中購買了什麼,因爲該方法通常不能保證不拋出其他異常。例如,考慮一個線程被中止的情況。

8

這已經在一定程度上以<exception> documentation comment tag的形式提供。通過使用類似FxCop introspection的調查樹來深入挖掘將是可能的,但是一旦涉及虛擬方法,它可能會很快變得混亂。

至於編輯器集成,你可能會有更好的運氣在Resharper中尋求這樣的東西,而不是試圖在Visual Studio中獲得對它的支持。

相關問題