Отладка исключения в пустом блоке catch

Я отлаживаю производственное приложение с множеством пустых блоков catch вздох:

try {*SOME CODE*}
catch{}

Есть ли способ увидеть, что это за исключение, когда отладчик попадает в ловушку в IDE?

Извините, должно было быть яснее - я не могу изменить код - я просто пытаюсь отследить некоторые ошибки

Rikalous 02.09.2008 19:44
Библиотека для работы с мороженым
Библиотека для работы с мороженым
Лично я попрощался с операторами print() в python. Без шуток.
8
1
2 539
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Разве вы не можете просто добавить исключение в этот момент и проверить его?

В Visual Studio - Отладка -> Исключения -> Установите флажок «Исключения среды CLR» в столбце «Выброшенные».

Ответ принят как подходящий

В VS, если вы посмотрите в область Locals вашей IDE, находясь внутри блока catch, у вас будет что-то вроде $ EXCEPTION, которое будет содержать всю информацию для исключения, которое только что было перехвачено.

Вам необходимо вручную добавить токен $exception в окно просмотра.

Rikalous 24.01.2019 14:51

Ты можешь написать

catch (Exception ex) { }

Затем, когда здесь возникает и перехватывается исключение, вы можете проверить ex.

Нет, это невозможно, потому что этот блок кода говорит: «Меня не волнует исключение». Вы можете выполнить глобальный поиск и заменить следующим кодом, чтобы увидеть исключение.

catch {}

со следующими

catch (Exception exc) {
#IF DEBUG
    object o = exc;
#ENDIF
}

Что это будет делать, так это держать ваш текущий ничего не уловимый для производственного кода, но при работе в DEBUG он позволит вам установить точки останова на объекте o.

Если вы используете Visual Studio, есть возможность прерывать работу всякий раз, когда возникает исключение, независимо от того, не обработано оно или нет. Когда генерируется исключение, помощник по исключению (возможно, только VS 2005 и новее) сообщит вам, что это за исключение.

Нажмите Ctrl + Alt + E, чтобы открыть диалоговое окно параметров исключения и включить его.

Это тот механизм, который я в конечном итоге использовал - я не мог найти способ увидеть скрытое исключение, как описал AdamB

Rikalous 15.09.2008 15:01

Хотя будьте осторожны в своих желаниях. Если вы сделаете это с помощью приложения MVC, вы будете поражены тем, сколько исключений перехватывается при каждом запросе.

Casey 23.05.2014 23:20

@sectrean

Это не работает, потому что компилятор игнорирует значение Exception ex, если его ничто не использует.

Другие вопросы по теме