我知道可以通过 Ctrl-Alt-E 的“异常”对话框阻止 Visual Studio 调试器在某些类型的异常被抛出时停止。但如果我想从代码中控制这个功能,只针对一些特定的位置,而不是全部启用或禁用呢?例如:
try
{
SomeMethod(token);
}
catch (OperationCancelledException)
{
return false;
}
// ...
void SomeMethod(CancellationToken token)
{
// ...
// I don't want the debugger to stop on the following line
#pragma ignore(OperationCancelledException, true)
token.ThrowIfCancellationRequested();
#pragma ignore(OperationCancelledException, false)
}
我使用假设的
#pragma ignore
来说明我的意思,但是是否真的存在这样的东西呢?更新以解决“不清楚你在问什么”的关闭投票。在调试器中尝试此代码:https://dotnetfiddle.net/npMk6r。确保在Ctrl-Alt-E对话框中启用了所有异常。调试器将在每次循环迭代时停止在
throw new OperationCanceledException("cancelled1")
行上。我不希望发生这种情况,因为它很烦人。然而,我确实希望它在循环外的最后一个throw,throw new OperationCanceledException("cancelled2")
(或任何其他地方)停下来。
catch{}
块,你试过了吗..? - MethodMantoken.ThrowIfCancellationRequested()
处停止,除非我在Ctrl-Alt-E对话框中禁用OperationCancelledException
(或TaskCancelledException
)。我不想吞掉这个异常,我只想让调试器忽略代码中某些特定的位置,而不是所有位置。 - avoDebuggerHiddenAttribute
是一个可行的选项吗? - InBetween