【发布时间】:2019-01-30 05:31:15
【问题描述】:
我将我的 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 异常。
这可能吗?
【问题讨论】:
-
您可以使用
Console.Writeline(Exception)让调试器不停止并忽略抛出的异常。 -
嗨,亚历克西斯。我不认为你理解这个问题。我已更新代码示例以包含您的反馈。我的问题是代码停在'Method1();'行。
-
为什么要在非异常情况下使用异常?也就是说,你永远不应该使用
try { int.Parse("a"); } catch {}而不是 (if (!int.TryParse("a", out var i)) return false;stackoverflow.com/questions/729379/… -
在异常设置下,您可以指定要中断的异常。如果我只想调试特定功能,我将它们全部关闭,如果你想从某个地方调试某些异常,你可以:1)保持它们打开,当你逐步执行程序并弹出异常时,你可以禁用它,或告诉调试器不要中断来自某些库的异常(VS2017,不确定其他 VS 版本)。或者 2) 您可以在问题发生之前附加调试器并继续处理每个不需要的异常。
标签: c# debugging exception-handling visual-studio-2017