如何解决在几种方法C ++ 11中抛出自定义异常
我有一个用例,其中我必须捕获各种可能引发的异常并从我的库中传递等效的异常
示例:
def subscribe() {
try {
.....
.....
catch (A e) { throw new MY_A(e);}
catch (B e) { throw new MY_B(e);}
catch (C e) { throw new MY_C(e);}
catch(...) { throw default(e)}
}
我想通过几种方法执行此操作-订阅,取消订阅,停止,启动等,有没有简便的方法?
如果使用python,我只需编写一个装饰器即可实现。在C ++ 11中执行此操作的简单方法是什么?
解决方法
是的,您可以使用std::current_exception()
在catch(...)
块中获取当前异常的句柄。结合将默认参数在函数调用时求值这一事实,我们可以执行以下操作:
void common_exception_handler(std::exception_ptr eptr = std::current_exception()) {
try {
if (eptr) {
std::rethrow_exception(eptr);
}
}
catch (A const &e) {throw MY_A(e);}
catch (B const &e) {throw MY_B(e);}
catch (C const &e) {throw MY_C(e);}
}
void subscribe() {
try {
...
}
catch (...) {common_exception_handler();}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。