Я знаю, что могу запретить отладчику Visual Studio останавливаться на определенных исключениях, когда их бросают (через диалог "Исключения" Ctrl-Alt-E). Но что, если хотите контролировать это из кода, для некоторых конкретных мест, а не на основе "все или ничего"? Например:
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
, чтобы проиллюстрировать, что я имею в виду, но что-то вроде этого действительно существует?
UPDATE, чтобы ответить на вопрос "Нечеткое, что вы просите". Попробуйте этот код в отладчике: https://dotnetfiddle.net/npMk6r. Убедитесь, что все исключения включены в диалоговом окне Ctrl-Alt-E. Отладчик будет останавливаться на строке throw new OperationCanceledException("cancelled1")
на каждой итерации цикла. Я не хочу, чтобы это случалось так, как это раздражало. Тем не менее, я хочу, чтобы он остановился на последнем броске вне цикла, throw new OperationCanceledException("cancelled2")
(или где-нибудь еще, если на то пошло).