Я прочитал много тем, в которых описан способ исключения исключений первого шанса в методах async
- «Включить все исключения CLR Runtime» в отладчике Visual Studio.Проблема в том, что это приводит к непреднамеренному побочному эффекту взлома внутри каждого try/catch
, что еще больше усложняет отладку.При поиске ответов на эту проблему все они указали «Отключить все исключения CLR Runtime» в отладчике Visual Studio.
Есть ли способ исправить одну из этих проблем, не вызывая другую?
Я знаю, что существует множество особых способов обработки try/catch
исключений внутри Задач, но я надеюсь, что есть хоть какой-то компромисс.
Пример кода:
static void Main() {
try {
// When all CLR exceptions are enabled, we end up breaking here.
throw new Exception();
} catch { }
AsyncMethod().GetAwaiter().GetResult();// or .Wait()
}
static async Task AsyncMethod() {
// When all CLR exceptions are disabled, we end up breaking in Main.
// (No matter how deep the async calls go)
throw new Exception();
}
Что странно, несколько месяцев назад такой проблемы не было.async
методы ломались при первом шансе, а исключения в try/catch
не ломались.Я запутался, как тогда все работало нормально.