2008-11-05 28 views
41

有什麼方法可以找出.NET代碼中的任何方法可能拋出什麼異常?理想情況下,我想看看可能會拋出什麼,並選擇我想要處理的內容。我想我想要從java中的throws子句中獲得的信息。找出一種方法可能拋出的異常C#

情況是我正在從網絡上的xml文檔做一個linq查詢,並想知道可能會出錯。我可以在反射器中打開裝配體並看看,但我認爲可能有更簡單的方法。

回答

42

.NET沒有強制執行(「checked」)異常,如java。智能感知可能會顯示此信息,如果開發人員已添加/// <exception.../>塊 - 但最終會發生比您預期的更多異常(OutOfMemoryException,ThreadAbortException,TypeLoadException等都可能發生相當不可預知的情況)。

一般而言,您應該瞭解哪些事情可能出錯,以及哪些事情可以實際做些有用的事情。在大多數情況下,正確的行爲是讓異常冒泡(只需運行任何「finally」代碼釋放資源)。

Eric Lippert在這個問題上有一個很好的博客here

+0

謝謝。鏈接到Eric Lippert的博客也非常有幫助。 :) – Helephant 2008-11-05 10:19:03

0

只要您使用BCL類,它們都會被完全記錄下來,因此Intellisense會顯示方法可能拋出的任何異常。除此之外(並閱讀文檔),我認爲沒有辦法。

+0

有許多例外沒有記錄,因爲它們不能被預測;即使如此,你也不能完全相信智能感知是最新的。順便說一句,downvote不是從我。 – 2008-11-05 10:14:11

+1

您提到的TypeLoadException之類的「許多異常」可能來自CLR本身,從技術上講甚至來自CPU。我不認爲任何人有興趣預測和捕捉那些。另一方面,.NET SDK列出了可由BCL方法拋出的異常... – liggett78 2008-12-21 18:31:06

+1

這些通常是您實際上感興趣的內容。 – liggett78 2008-12-21 18:32:03