2010-12-05 127 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构建的异常捕获工具