Могу ли я остановить Visual Studio на необработанных исключениях внутри кода задачи?

Visual Studio имеет определенную функцию, которая значительно упрощает отладку необработанных исключений: он останавливается на ошибочной строке кода и показывает исключение.

Похоже, что класс Task спроектирован таким образом, что эта функция всегда подавляется: он перехватывает каждое исключение, а затем повторно генерирует другое исключение, когда задача Wait ред или доработан.

Я знаю, что могу остановить это на случайных исключениях, но это не всегда помогает: представьте, что несколько обработанных исключений одного и того же типа возникают раньше необработанного. В этом случае VS будет останавливаться на каждом непроблемном исключении в дополнение к тому, которое действительно вызывает проблему.

Другая альтернатива еще менее приемлема: просто взгляните на трассировку стека InnerException : это означает, что, хотя я знаю, какая строка вызвала исключение, я не могу получить доступ ни к одному из ее локальных состояний, как я мог бы если программа действительно была остановлена ​​на этом.

Могу ли я каким-то образом получить лучшее из обоих миров, используя класс Task , но не имея необходимости жить с ухудшенным набором функций отладки исключений?


Дополнительный вопрос: означает ли это, что исключение нулевой ссылки внутри блока await не приведет к остановке Visual Studio прямо здесь, а вместо этого остановится в другом месте?

6
задан Roman Starkov 26 January 2012 в 15:15
поделиться