asp.net - 如何打破 ASP.NET 中未处理的异常?

标签 asp.net visual-studio debugging

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

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

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

最佳答案

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

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

[编辑]

如果要破解仅限 在未处理的异常上,在 Debug->Exceptions 下,取消选中所有异常类型上的“抛出”,并确保为您感兴趣的异常检查“用户未处理”。

Exception Interface

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

Debugger breaking on User-unhandled exception

关于asp.net - 如何打破 ASP.NET 中未处理的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/176839/

相关文章:

c# - 从字符串转换为UInt32-C#

vba - Windows().Activate 适用于除一台计算机之外的所有计算机

c# - Debugger在VS2015中跳回

c++ - Visual Studio 2019为C26444提供cout.imbue

asp.net - 单击“确定”或“取消”时防止隐藏 ModalPopupExtender

asp.net - 防止 ASP.NET 对输出中的字符串进行编码

asp.net - 经典的 ASP 和 ASP.NET MVC 可以在同一个站点上并行运行吗?

windows - 如何修复 Windows 8.1 中的 visual studio 错误 "cannot find one or more components .Please re-install the application"?

ruby-on-rails - Ruby on Rails 调试问题

ASP.NET 从我的代码后面设置 javascript、jQuery 设置