Я использую VS2015
, и я хочу выкинуть errno
из недопустимого обработчика параметров, чтобы я мог форматировать сообщение об ошибке в блоке catch. Мой код выглядит следующим образом:Throw исключение из недопустимого обработчика параметров
_set_invalid_parameter_handler([](wchar_t const*, wchar_t const*, wchar_t const*, unsigned int, uintptr_t) {
throw errno;
});
try
{
char buffer[2];
strcpy_s(buffer, "testtest");
}
catch (int e)
{
//strerror
perror("catch int");
}
catch (...)
{
perror("catch ...");
}
Если я компиляция в режиме debug
, код работает отлично время в release
режиме он разбился. Почему это ведет себя по-другому?
@hans Вы правы. И/Ehs также работает, хотя я не знаю точной разницы между ним и/Ehsc – Nifury