代码之家  ›  专栏  ›  技术社区  ›  Kibbee

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

  •  15
  • Kibbee  · 技术社区  · 17 年前

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


    编辑:

    需要明确的是,我不想在抛出异常时中断,因为很多时候我的代码都能很好地处理它们,而且我不想在每个异常上都停止。我只想停止处理代码无法处理的异常。


    在VisualStudio2008中,这似乎不是一个问题。在Visual Studio 2003中,所有异常都被视为用户处理的,因为ASP.NET运行时捕获了所有异常,以便不会导致web服务器进程停止。在VisualStudio2008中,在检查用户未处理的异常时,似乎不计算这种类型的异常捕获。

    1 回复  |  直到 5 年前
        1
  •  22
  •   Glorfindel Doug L.    6 年前

    在调试下->异常,请检查公共语言运行时异常的“抛出”列(至少)。选中“抛出”以查找您感兴趣的其他异常。

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

    [编辑]

    如果你想打破 只有 对于未处理的异常,在“调试”下->异常,取消选中所有异常类型上的“抛出”,并确保选中了您感兴趣的异常的“用户未处理”。

    Exception Interface

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

    Debugger breaking on User-unhandled exception