gpt4 book ai didi

c++ - 我可以为抛出 bad_cast 的情况安装自定义处理程序吗?

转载 作者:行者123 更新时间:2023-11-28 03:39:32 27 4
gpt4 key购买 nike

万一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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com