我知道我可以防止Visual Studio调试器在引发某些异常(通过Ctrl-Alt-E“Exceptions”对话框)时停止某些异常。但是如果想要从代码控制这个,对于某些特定的地方而不是全部或者没有基础呢?例如:有选择地阻止调试器在第一次出现异常时停止
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 new OperationCanceledException("cancelled2")
(或其他任何地方)。
如果你只是有一个空的'抓{}'块你有没有尝试过的..? – MethodMan 2014-10-08 21:20:23
@DJKRAZE,除非我在Ctrl-Alt-E对话框中禁用'OperationCancelledException'(或'TaskCancelledException'),否则调试器将停止在'token.ThrowIfCancellationRequested()'上。我不想吞下异常,我只是希望调试器在我的代码中的某些地方忽略它,而不是到处都是。 – avo 2014-10-08 21:24:32
'DebuggerHiddenAttribute'是否可行? – InBetween 2014-10-08 22:02:01