Этот вопрос относится к нативным программам на C ++, созданным VS2017, но выполненным ВНЕ VS IDE:
Почему необработанные исключения незаметно игнорируются в нативных сборках C ++ Release, тогда как сборки Debug ловят то же исключение и отображают приятноеожидаемое сообщение об ошибке?
Я попытался найти настройку сборки, которая влияет на необработанные исключения, но не удалось.
Код, генерирующий исключение, приведен ниже.
Обратите внимание, что я не являюсьспрашивая, как исправить этот код и избежать исключения (или как его обработать), но как игнорировать это исключение в сборках выпуска, поэтому ОС ловит его и жалуется.
std::map<const string, const int> MyMap;
auto it = MyMap.find("Cant Find Me");
int res = it->second; //Dereferencing the end iterator causes the expected exception. This exception is not explicitly handled anywhere else.
В ответ на некоторые комментарии об утверждении «Отладка против исключения» я попытался выполнить его со следующим кодом, вызывающим исключение:
PCHAR p;
p = NULL;
*p = 'X'; //Provoke an exception by following a null pointer and awaiting the chaos and madness at its end...
Этот код по-прежнему не вызывает сообщений об ошибках при выполнении ВНЕ IDE MSVC.Теперь это происходит для ОБОИХ сборок Release и Debug.