如何摆脱.NET Framework抛出的异常

时间:2009-11-24 15:18:35

标签: c# .net exception debug-symbols

在最近的一个项目中,我使用了大量的数据绑定和xml序列化。我正在使用C#/ VS2008并已下载.NET框架的符号信息以帮助我进行调试。

我正在处理的应用程序有一个全局“catch all”异常处理程序,如果碰巧有任何未捕获的异常被抛出,则向用户呈现更可呈现的消息。我的问题是当我打开Exceptions-> Thrown时能够在“catch all”捕获之前调试异常。在我看来,框架抛出了许多未立即捕获的异常(例如在ReflectPropertyDescriptor中),因此我实际上尝试调试的异常会在噪声中丢失。有没有办法摆脱框架引起的异常,但保留我自己的代码?

更新:经过更多研究并且实际上试图摆脱框架抛出的异常(许多结果是框架中的已知问题,例如:XmlSerializer giving FileNotFoundException at constructor)我终于找到了一个解决方案适用于我,在工具>>中打开“仅我的代码”选项>>调试>>一般>>在VS2008中启用我的代码。

3 个答案:

答案 0 :(得分:6)

您可以通过VS2008中的“例外”对话框微调哪种类型的异常,但是如果框架工作引发“很多例外”,您可能也想查看它。仅仅因为处理异常并不意味着它是安全的,或者它并没有破坏你的表现。

答案 1 :(得分:2)

过滤框架抛出的异常的一种方法是从Exception派生自己的异常类。然后,您可以使用多个catch块:

try
{
//your code here
}
catch (MyAppException myEx)
{
//Do something with your custom exception
}
catch (Exception ex)
{
//Do something (or nothing) with an exception thrown by the Framework
}

答案 2 :(得分:1)

你可能值得花些时间去除所有异常,因为它不是一个很好的编程技巧。例如,如果您正在使用输入输出(如文件读/写),则捕获IOException而不是更通用的Exception,另一个示例是任何XML操作的XmlException。使用catch-all通用异常可能会产生性能损失,因为特定异常必须“冒泡”到通用异常处理程序。

希望这有帮助, 最好的祝福, 汤姆。