我有一些本机C ++代码(native
)通过之前设置的函数指针(managed
)调用托管C ++函数(managed_ptr
)(在同一程序中)在该计划中。与此类似:
原生功能:
void(*managed_ptr)();
void native()
{
try
{
managed_ptr();
}
catch (my_exception e)
{
// Handle exception
}
}
管理功能:
void managed()
{
// Code
if(x)
throw my_exception();
}
异常类型(本机):
class my_exception final : public exception
{
public:
my_exception() : exception("Error!") {}
}
但是当managed
抛出本机异常my_exception
时,它会跳过本机异常try / catch并使用SEHException
崩溃程序。为什么这样做以及如何使用本机处理程序进行本机异常?
提前致谢,
MagikM18
修改
我尝试创建一个名为throwNative
的本机函数,以便在本机代码中抛出错误,并使用异常对象从托管代码调用该错误,但这也不起作用。
throwNative:
template<typename _Ex> void throwNative(_Ex e)
{
throw e;
}
托管代码:
// ...
throwNative(my_exception());
// ...