
Разве вы не можете просто добавить исключение в этот момент и проверить его?
В Visual Studio - Отладка -> Исключения -> Установите флажок «Исключения среды CLR» в столбце «Выброшенные».
В VS, если вы посмотрите в область Locals вашей IDE, находясь внутри блока catch, у вас будет что-то вроде $ EXCEPTION, которое будет содержать всю информацию для исключения, которое только что было перехвачено.
Вам необходимо вручную добавить токен $exception в окно просмотра.
Ты можешь написать
catch (Exception ex) { }
Затем, когда здесь возникает и перехватывается исключение, вы можете проверить ex.
Нет, это невозможно, потому что этот блок кода говорит: «Меня не волнует исключение». Вы можете выполнить глобальный поиск и заменить следующим кодом, чтобы увидеть исключение.
catch {}
со следующими
catch (Exception exc) {
#IF DEBUG
object o = exc;
#ENDIF
}
Что это будет делать, так это держать ваш текущий ничего не уловимый для производственного кода, но при работе в DEBUG он позволит вам установить точки останова на объекте o.
Если вы используете Visual Studio, есть возможность прерывать работу всякий раз, когда возникает исключение, независимо от того, не обработано оно или нет. Когда генерируется исключение, помощник по исключению (возможно, только VS 2005 и новее) сообщит вам, что это за исключение.
Нажмите Ctrl + Alt + E, чтобы открыть диалоговое окно параметров исключения и включить его.
Это тот механизм, который я в конечном итоге использовал - я не мог найти способ увидеть скрытое исключение, как описал AdamB
Хотя будьте осторожны в своих желаниях. Если вы сделаете это с помощью приложения MVC, вы будете поражены тем, сколько исключений перехватывается при каждом запросе.
@sectrean
Это не работает, потому что компилятор игнорирует значение Exception ex, если его ничто не использует.
Извините, должно было быть яснее - я не могу изменить код - я просто пытаюсь отследить некоторые ошибки