【问题标题】:How can I break on an unhandled exception in ASP.NET?如何打破 ASP.NET 中未处理的异常?
【发布时间】:2010-09-15 15:58:07
【问题描述】:

在 Visual Studio 中调试应用程序时,有 2 个选项可用于中断异常。抛出异常时立即中断,仅在未捕获异常时才中断。这在开发桌面应用程序时效果很好。但是,在开发 ASP.NET 应用程序时,所有异常最终都会被 IIS 中的代码捕获。是否可以禁用此行为,以便当我的 ASP.Net 应用程序代码无法捕获异常时调试器中断?


编辑:

为了清楚起见,我不想在抛出异常时中断,因为很多时候它们被我的代码处理得很好,我不想在每个异常上都停下来。我只想停止我的代码未处理的异常。


编辑:

这在 Visual Studio 2008 中似乎不是问题。在 Visual Studio 2003 中,所有异常都被视为用户处理,因为 ASP.NET 运行时捕获了所有异常,以免关闭 Web 服务器进程。似乎在 Visual Studio 2008 中,这种类型的异常捕获在检查用户未处理的异常时不会被计算在内。

【问题讨论】:

  • Kibbee - 我已添加案例供您编辑。

标签: asp.net visual-studio debugging


【解决方案1】:

在 Debug->Exceptions 下,检查 Common Language Runtime Exceptions 的“Thrown”列(至少)。检查“抛出”以获取您感兴趣的其他异常。

现在,如果附加了调试器(活动调试或“附加到进程”),您的 ASP.NET 应用程序将因 CLR 异常(或您选择的任何其他异常)而中断。

[编辑]

如果您想在未处理的异常上中断,请在“调试”->“异常”下,取消选中所有异常类型上的“已抛出”,并确保为您正在处理的异常选中“用户未处理”有兴趣。

然后,如果附加了调试器,您的 ASP.NET 应用程序将在您选择的每个用户未处理的异常上中断,而不管运行时最终会捕获异常的事实。示例:

【讨论】:

  • +1 以获得非常有用的答案!好久没发帖了,还是有帮助,嗯(:谢谢!
  • 值得一提的是,要出现“用户未处理”列,您需要在“选项”>“调试”>“常规”中启用“仅我的代码”。
  • 在 Visual Studio 2005 中,“异常”菜单选项不会出现在“调试”下。您可以自定义菜单以使其可见或按 CTRL + ALT + E 查看此菜单
猜你喜欢
  • 1970-01-01
  • 2011-08-15
  • 2011-08-11
  • 2012-07-26
  • 1970-01-01
  • 1970-01-01
  • 2010-10-29
  • 1970-01-01
  • 2013-11-28
相关资源
最近更新 更多