Я очень новичок в асинхронном программировании. Когда генерируется исключение, я использую Visual Studio, чтобы остановиться на ошибочной строке. В коде, подобном приведенному ниже, отладчик обычно останавливается и выделяет строку 2
int[] array = new int[] { 0, 1, 2 };
int throwsException = array[3];
Но когда в методе, вызываемом с await
, возникает исключение, я полностью теряюсь, и отладчик просто останавливается на линии ожидания.
public async void ThrowException() {
int[] array = new int[] { 0, 1, 2 };
int throwsException = array[3];
}
// Debugger stops here
await ThrowException();
Проблема в том, что у меня есть метод ожидания, который вызывает ошибку где-то между 100-м и 200-м раз, когда он вызывается. Я не знаю, как определить проблему в отладчике! Есть ли способ легко идентифицировать проблемную строку кода?
вы можете выбрать, на каких исключениях отладчик остановится, перейдите, чтобы проверить параметры отладки/исключений в вашей визуальной студии.
http://msdn.microsoft.com/en-us/library/038tzxdw.aspx
похоже, что это некоторая внутренняя ошибка Windows, поэтому отладчик может не остановиться там, если она не настроена, поэтому вы можете настроить визуальную студию для остановки даже в большинстве внутренних оконных исключений, а затем посмотреть на стек вызовов.
Или вы можете обернуть свой код внутри функции "public async void ThrowException()" с помощью блока try/catch и поставить точку останова внутри catch