2010-10-19 73 views
5

在Eclipse中編程Java,我習慣於處理異常。在使用VisualStudio的C#中,似乎我不能說在一個方法上「拋出異常」......經過很多編碼之後,我發現了很多異常,並且在測試過程中發現它們時必須抓住它們。我想被迫去處理它們,這樣VisualStudio可以說在這裏你需要一個catch或者我不會讓你繼續下去:)這可能嗎?沒有強制的異常處理?

謝謝

回答

8

不需要C#不會強制您處理異常。這是語言設計師的一個明智的設計決定。

有關原因的詳細信息,請參見The Trouble With Checked Exceptions,Anders Hejlsberg在其中討論了爲什麼它們不屬於C#的一部分。

+0

噢,太糟糕了:)謝謝你的回答! – Johannes 2010-10-19 20:49:50

+0

其中,儘管據稱容易出錯,但卻讓程序員可以自由地聲明「我知道我在做什麼」 – 2010-10-19 20:50:10

+0

@Johannes:在你認爲這是「不好的」之前,我會閱讀那次採訪。我曾經認爲這是C#中的一個缺陷,但我已經完全轉換爲將其視爲「專業版」... – 2010-10-19 20:50:36

0

不,這是不可能的。

您可以做的是查找您在MSDN中執行的.NET庫方法:預計將由該方法拋出的異常記錄在那裏。之後,你可以決定你想要捕捉哪些,哪些不想在這裏處理。

+0

沒有更好的方式比在文檔中查看它們更好嗎?如果你問我,應該有一些可能性在VisualStudio中做到這一點:)某些類型的「右鍵單擊 - >可以顯式的異常可以拋出」:) – Johannes 2010-10-19 20:54:40

+0

@Johannes:沒錯,那很好,但是因爲context- Visual Studio中的敏感幫助是相當不錯的(只需將光標放在方法名稱上按F1即可),查找文檔非常快。 – Heinzi 2010-10-19 21:27:08

0

您可以使用various tools查找例外。 .NET 4也有一個叫做代碼合同的東西,它可以幫助你執行前/後條件,並且可以避免一些例外情況。

2

不,在C#中沒有檢查異常。而原因很簡單:

1)他們往往沒有達到預期的有目的的,因爲不是每個如下兩種處理它們明示或將它們上傳鏈推薦的做法。相反,它們會在開發堆棧中被開發人員「吃掉」。
2),因爲它們是文檔的自然組成部分,而不是可執行代碼,他們應該進入的文件,而不是雜亂的代碼表面開發工具

3) C#/框架文件是這樣的理想之地文檔。使用Visual Studio Object瀏覽器進行遊戲,瀏覽到該方法,您會在下面的窗格中看到它們。