已检查 C# 中的异常捕获 [已关闭]

Checked exception catching in C# [closed]

提问人:stimms 提问时间:10/24/2008 更新时间:7/5/2013 访问量:3037

问:


我们不允许向读者、工具、软件库等寻求推荐的问题。您可以编辑问题,以便用事实和引文来回答。

5年前关闭。

Java 要求您捕获所有可能的异常,或者将它们声明为在方法签名中抛出的异常。C# 并非如此,但我仍然认为捕获所有异常是一种很好的做法。有没有人知道一个工具可以处理 C# 项目并指出抛出异常但未捕获的地方?

C# 异常

评论

4赞 Jason Bunting 10/24/2008
为什么要捕获所有异常?除非你可以做一些事情来纠正问题,或者你正在记录它(在这种情况下,你会在之后重新抛出它),否则你应该让异常冒泡到代码中可以处理它们的地步。
0赞 Jason Bunting 10/24/2008
也就是说,我确实认为这样的工具会很有用,但不是为了你提到的完全相同的目的。
0赞 stimms 10/24/2008
好吧,就是这样,我不知道会出现什么例外。我可以抓住异常,但我该怎么办?明确异常会让你更多地思考你正在写的内容以及它可能出错的地方。

答:

2赞 Mitchel Sellers 10/24/2008 #1

Red-Gate 软件有一个名为 Exception Hunter 的产品,它应该可以做到这一点。

编辑:本产品已被Red-Gate软件停产。

0赞 azamsharp 10/24/2008 #2

如果将 C# 用于 Web 应用程序,则可以使用 ELMAH,它显示所有已处理和未处理异常的列表。

只需下载 ELMAH 并插入即可。它是免费的!

0赞 10/24/2008 #3

除非需要,否则不要在单个方法中捕获它们,设置全局处理程序。

Application.ThreadException += new ThreadExceptionEventHandler( Application_ThreadException );

private static void Application_ThreadException( object sender, ThreadExceptionEventArgs e)
{ 
       dispatchException( e.Exception );
}
9赞 Marcus Griep 10/24/2008 #4

查看 Jason Bock 为 .NET Reflector 提供的 ExceptionFinder 插件。它只做你要找的东西。这是一个屏幕:

CodePlex 上查看

3赞 PetitJean 5/6/2009 #5

有一个 R# 插件可以分析引发的异常。http://exceptionalplugin.codeplex.com/