首页 > 解决方案 > 调试时如何正确忽略异常?

问题描述

我将我的 Visual Studio 异常设置设置为在引发“公共语言运行时异常”时中断。

我有许多例程可以捕获异常、处理它们并继续。当我调试我的程序时,我相信这些异常已经被正确处理并且不希望调试器停止它们。

如何防止调试器停止处理异常?(注意,我想打破所有其他 CLR 异常)

我认为 DebuggerStepThrough 可以解决问题。然而事实并非如此。以下代码在 'Method1();' 处停止

using System;

namespace ConsoleApp8
{
    class Program
    {
        static void Main(string[] args)
        {
            Method1();
        }

        [System.Diagnostics.DebuggerStepThrough]
        static void Method1()
        {
            try
            {
                throw new InvalidOperationException();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
    }
}

-- 编辑 -- Kirk - 我只在特殊情况下抛出异常。我使用 Visual Studio Tools for Office。这个 MS 库经常抛出可以处理和忽略的异常。

我想处理另一个库抛出的某些异常,但防止 VS2017 调试器在这些错误发生时停止。

需要明确的是,这些异常通常是 COM 异常。我不希望调试器忽略所有 COM 异常。我只希望调试器忽略我已捕获和处理的 COM 异常。

这可能吗?

标签: c#debuggingexception-handlingvisual-studio-2017

解决方案


调试器可以在抛出异常时中断执行,因此您可以在调用处理程序之前检查异常。在异常设置窗口(调试 > 窗口 > 异常设置)中,展开异常类别的节点,例如公共语言运行时异常。在那里你可以改变行为。


推荐阅读