万一dynamic_cast<SomeType&>
失败 bad_cast
抛出异常。在我的代码中有一个单独的异常层次结构和 bad_cast
不在该层次结构中,因此我的代码无法处理 bad_cast
.我可以抛出一些其他异常吗?
我的意思是我想像这样编写一个自定义处理程序:
void OnBadCast()
{
throw MyException( "Bad cast" );
}
并以某种方式在 C++ 运行时注册它
RegisterMyBadCastHandler( &OnBadCast );
以便调用此处理程序而不是 bad_cast
被抛出。
这可能吗?
最佳答案
我不认为你可以改变这种行为。
您可以做的是使用您自己的脚轮,但是:
template<class T, class E> T myCast(E expr)
{
try
{
return dynamic_cast<T>(expr);
}
catch(std::bad_cast e)
{
// custom handler
}
};
关于c++ - 我可以为抛出 bad_cast 的情况安装自定义处理程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9736208/