【问题标题】:VS 2008 Addon to temporarily disable/remove all catch blockVS 2008 插件临时禁用/删除所有 catch 块
【发布时间】:2010-11-01 03:54:54
【问题描述】:

是否有任何插件可以让我暂时禁用所有 catch 块。我正在维护一个应用程序,我需要找出它到底在哪里抛出异常。有人已经完成了错误处理,所有层都让我的工作变得艰难:(

【问题讨论】:

    标签: c# .net visual-studio debugging exception


    【解决方案1】:

    我不知道禁用 catch 块的方法,但您尝试实现的目标可以通过异常对话框中的 VS 选项轻松完成:

    Debug -> Exceptions -> CLR Exceptions -> Check the "Thrown" checkbox.
    

    这样,VS 会在抛出异常时立即中断,然后再运行任何 catch 块。

    【讨论】:

    • 注意,除非您知道该异常的确切类型,否则在您发现问题异常之前预计会有很多误报。
    • 我已经找了很久了!原来VS2005在调试菜单中默认没有Exceptions...选项,但是你可以通过自定义工具栏来添加。
    • 安迪:我确定它在菜单的某个地方。甚至 VS2002 也有。好久没见了……
    • Mehrdad:我有很多菜单选项的感觉。我猜是因为家里的VS2008和工作的VS2005……
    • @Andy:VS2k5 确实有 Exceptions 菜单(C++ 项目)Debug -> Exceptions 或 Ctrl+D,E(来自 C# 键盘映射)
    【解决方案2】:

    您无需禁用所有 catch 块来识别异常首先从哪里引发 - 在调试器中。如果您在 VS 中打开“异常”对话框,您可以将调试器配置为在异常未处理(默认)或首次抛出时捕获异常。这是最简单且干扰最小的方法。

    可以从“调试”菜单访问“异常”对话框。

    【讨论】:

      【解决方案3】:

      您应该使用“调试”>“异常”菜单来调出“异常”对话框,然后在您希望开发环境在调试期间中断的任何类型的异常上选中“抛出”复选框。

      在异常处理发生之前,当特定异常(或其任何子类)被抛出时,您会发现 VS 会中断。

      这会解决你的问题。

      【讨论】:

        【解决方案4】:

        我发现通常更有趣的是堆栈窗口。

        在调试模式下,运行项目,去

        Debug => Window => Call stack (Ctrl+d, C)
        

        现在您可以看到要执行的步骤,您可以 d-单击它们以转到代码行。我觉得它真的很方便。

        【讨论】:

        • 是的,但是在中断之前你没有调用堆栈。
        • 不了解所有异常(应该检查一下),但我知道它适用于 stackOverflows(异常)...
        • 是的,当然,因为异常会将您打断进入调试器,提供调用堆栈。这个问题首先是如何打破异常。
        • 如果我没记错的话,OP 中的问题是抛出了异常,但它不在原点。所以我的建议是跟踪堆栈跟踪以查看异常来自何处..
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多