#c #visual-studio-2008 #exception-handling
#c #visual-studio-2008 #исключение
Вопрос:
Я не смог найти поток с точно моей проблемой, поэтому, если кто-нибудь знает, была ли она решена, пожалуйста, перешлите ее мне 🙂
Я работаю над Visual C 2008, версия 9.0.21022.8 RTM. Я создаю некоторое тестирование, но VisualStudio всегда прерывается при этом исключении
bool exceptionCaught = false;
try
{
char* buff = NULL;
buff[0] = 10;
}
catch (...)
{
exceptionCaught = true;
}
Я снял все флажки в Debugging-> Exceptions, я перепробовал все опции в Tools-> Options dialog, в разделе Debugging.
Я использую обработку исключений /HEa (но в любом случае, / EHsc ничего не меняет)
Этот фрагмент кода отлично работает на другом компьютере, но даже при использовании его конфигурации мое поведение не меняется, оно все время ломается…
Есть ли что-то, чего мне не хватает? другой вариант / меню?
Комментарии:
1. Обработка исключений C не улавливает структурированные исключения (SEH) .
2. «Этот фрагмент кода отлично работает на другом компьютере»… но должно ли это? Этот код не очень хорош, и трудно сказать, что вы даже пытаетесь с ним сделать.
Ответ №1:
Запись через нулевой указатель является неопределенным поведением в C . Нет причин, по которым он должен генерировать исключение C . Вы не можете использовать модель исключений C для обработки прямой записи на недопустимые адреса.
Вероятно, это порождает некоторую форму ошибки операционной системы; это также можно назвать «исключением», но это не имеет ничего общего с исключениями C .