如何在ASP.NET中打破未处理的异常?

时间:2008-10-07 00:48:34

标签: asp.net visual-studio debugging

在Visual Studio中调试应用程序时,有两种打破异常的选项。抛出异常后立即中断,仅在未捕获异常时中断。这在开发桌面应用程序时工作正常。但是,在开发ASP.NET应用程序时,所有异常最终都会被IIS中的代码捕获。是否可以禁用此行为,以便在我的ASP.Net应用程序代码无法捕获异常时调试器中断?


编辑:

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


编辑:

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

1 个答案:

答案 0 :(得分:22)

在Debug-> Exceptions下,检查Common Language Runtime Exceptions的“Thrown”列(至少)。检查'Thrown'以了解您感兴趣的其他例外情况。

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

[编辑]

如果您想在未处理的例外情况下打破 ,请在Debug-> Exceptions下,取消选中所有异常类型的'Thrown',并确保选中'User-unhandled'以查看例外''对此很感兴趣。

Exception Interface

然后,如果连接了调试器,那么无论运行时最终会捕获异常,您的ASP.NET应用程序都会在您选择的每个User-unhandled Exception中断。样品:

Debugger breaking on User-unhandled exception