在 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 下,取消选中所有异常类型上的“抛出”,并确保为您感兴趣的异常检查“用户未处理”。
然后,如果附加了调试器,您的 ASP.NET 应用程序将在您选择的每个用户未处理的异常上中断,而不管运行时最终会捕获异常的事实。样本:
关于asp.net - 如何打破 ASP.NET 中未处理的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/176839/