Как настроить отладчик Visual Studio, чтобы он не нарушал исключения? - PullRequest
0 голосов
/ 09 декабря 2011

Отладчик Visual Studio может немедленно прервать выполнение вашего приложения при возникновении исключения.Например (тривиальный):

try{
    a= b/0; // Faulty code
}
catch(.){
    printf("I know the code above is faulty.");
}

Когда вы запускаете программу, Visual Studio всегда ломается при неисправном коде.Как я могу настроить его так, чтобы он не ломался, если в C ++ try{} catch {} block возникло исключение?

1 Ответ

0 голосов
/ 09 декабря 2011

Редактировать: следующее относится к C # / CLR.Я не знаю, есть ли эквивалент для [неуправляемого] кода C ++.


Вы не можете - варианты «разбить на брошенный» или «разбить на необработанный».

Однако то, что можно сделать, это то, что весь метод может быть аннотирован атрибутом DebuggerNonUserCode .С этой аннотацией отладчик не будет прерываться для исключений, сгенерированных и обработанных внутри метода.(Он все равно прервется из-за исключений, распространяемых из метода.)

В общеязыковой среде исполнения семантика к этому атрибуту не прилагается.Он предоставляется для использования отладчиками исходного кода.Например, в Visual Studio 2005 [и 2010] отладчик не отображает элемент с этим атрибутом в окне отладчика, не останавливается в методе с этим атрибутом [в том числе, когда исключения вызываются из вызываемого метода]и не позволяет устанавливать точку останова в методе .

Используйте с осторожностью:)

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

Счастливое кодирование.

...