如果我知道我的程序中的特定extern "C"
函数(比如RaiseException
)是引发SEH异常的唯一函数,并且我希望它们转换为C ++异常,那么有没有办法我为该函数“有选择地启用”/EHa
,以便异常转换为CStructured_Exception
而不会膨胀或减慢程序的其余部分normally caused by /EHa
?
答案 0 :(得分:1)
显然没有编译器选项可以做到这一点。也许:
void RaiseException() {
__try {
// do something that might throw here...
}
__except(EXCEPTION_EXECUTE_HANDLER) {
throw std::exception("structured exception");
}
}