Отладка исключения в пустом блоке catch - PullRequest
8 голосов
/ 02 сентября 2008

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

try {*SOME CODE*}
catch{}

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

Ответы [ 7 ]

7 голосов
/ 02 сентября 2008

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

3 голосов
/ 02 сентября 2008

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

1 голос
/ 02 сентября 2008

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

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

1 голос
/ 02 сентября 2008

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

catch {}

со следующим

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

То, что это будет делать, - это сохранить текущее состояние «ничего не делать» для производственного кода, но при запуске в DEBUG это позволит вам установить точки останова для объекта o.

1 голос
/ 02 сентября 2008

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

catch (Exception ex) { }

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

0 голосов
/ 02 сентября 2008

@ sectrean

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

0 голосов
/ 02 сентября 2008

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

...