2010-12-05 76 views
3

我在VS2010中使用.NET 4.0。在我目前的應用程序(不是我寫的),我發現有像.NET查找吃掉的異常

Try 
    ' do something ' 
Catch e As Exception 
    ' do nothing about the exception. no logging and no re-throw... =o=!!! ' 
End Try 

一些很多代碼我的問題是如何找到這種在整個應用程序「吃掉」的異常。

謝謝!

編輯:對不起,我應該說Catch塊永遠不是空的。有時,它可能是Return FalseReturn NothingReturnReturn 0Return "" ...

+0

[C#:Find all empty catch catch]的可能重複(http://stackoverflow.com/questions/1486424/c-find-all-empty-catch-blocks) – 2010-12-05 23:55:03

+0

我不認爲它們是重複的。這個異常已被吃掉,並不意味着Catch塊是空的。它有時可能是`Return False`,`Nothing Nothing`或有時用`Return`退出該方法。 – 2010-12-06 01:08:43

回答

4

運行FxCop在所涉及的組件。尋找違規行爲rule CA1031

或者你可以在你的代碼裏使用這個表達式:

catch:b*\([^)]*\):b*\{:b*\} 
+0

雖然這個正則表達式只適用於C#代碼,但不像VB.NET代碼那樣。 – ChrisF 2010-12-05 23:58:06

1

使用ReSharper的(它的審判應該是可用)。

它會警告你你申報的地方,但不處理你的例外。

http://www.jetbrains.com/resharper/

+0

我不認爲ReSharper適用於VB.NET代碼。 – ChrisF 2010-12-05 23:59:03

1

在Visual Studio中,進入「調試」>「例外」,然後單擊複選框「時拋出」下的「通用語言運行時例外」。現在,當您將調試器附加到您的應用程序時,即使它們被捕獲,它也會停止所有異常。

0

正如@RoadWarrier指出的那樣,您可以使用FxCop來分析編譯後的代碼。與FxCop類似,您可以使用StyleCop對源代碼進行靜態代碼分析。如果您使用了resharper,則可以使用StyleCop for Resharper添加,在您輸入代碼行時可以進行實時代碼分析。

0

很好,你有應用程序的來源,你可以找到吃的例外。我們必須處理在生產階段吃掉異常的dll,並且我們正在使用一個使用MDbgCore.dll構建的異常捕獲工具