Это в основном любопытство, но я читал об истории Visual Studio по отлову исключений SEH в конструкции C ++ try-catch
. Я продолжаю утверждать, что более старые версии Visual Studio с включенным флагом / GX «иногда» ловили структурированные исключения Win32 в блоке C ++ catch
.
При каких обстоятельствах Visual Studio 6.0 вводит блок catch в следующем коде при сборке с флагом / GX?
char * p = NULL;
try
{
*p = 'A';
}
catch(...)
{
printf("In catch\n");
}
В моих собственных простых тестах с Visual Studio 6 + SP6 выполнение программы останавливается с неисследованным исключением, и «In catch» никогда не печатается. Однако некоторые статьи (например, this one) заставляют меня поверить, что можно войти в блок catch
.