Перерыв при броске для исключения, которое пойман - PullRequest
2 голосов
/ 07 января 2009

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

Есть ли способ получить такой же результат (перерыв при броске), но за исключением ловится в определенной точке? Я не заинтересован в том, чтобы делать это для ВСЕХ исключений или даже для всех исключений определенного типа (которые могли бы стать бесполезными очень быстро), но если бы я мог сделать это за один блок try или catch, я был бы счастлив

в некотором роде:

Ответы [ 2 ]

5 голосов
/ 07 января 2009

Делает ли диалог «Отладка -> Исключения» то, что вы хотите? Вы можете выбрать, какие исключения будут вызывать разрыв VS, независимо от того, перехвачены они или нет. Я не знаю, как это сделать только для определенной части кода, только на основе типа сгенерированного исключения.

2 голосов
/ 07 января 2009

Да, вы должны иметь возможность поставить точку останова на последней скобке вашего блока улова. Или команда броска, если вы повторно бросаете.

Если вам просто нужно иметь точку останова для какого-либо исключения внутри определенного метода, сделайте переброс.

try {  }
catch (Exception exc)
{ 
   throw;  // <-- breakpoint here
} 

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

Edit2: местоположение, вызвавшее исключение, должно быть в StackTrace объекта exc.

...