捕获异常并重新引发为提升异常

Catch an exception and re-throw as boost exception

提问人:Phil 提问时间:8/11/2020 更新时间:8/11/2020 访问量:117

问:

我正在尝试将 Boost 异常用于其他元数据,当异常在调用堆栈中冒泡时,我可以将这些元数据附加到异常。但是我遇到过但不知道如何处理的一个用例是:如何捕获 std::exception 并使用 boost 异常包装它并抛出/重新抛出包装的异常?例如:

try {
    CallFunctionThatThrowsStdException();
} catch(std::exception& ex) {
    MyBoostException bex{ex};
    bex << "Add metadata for this call scenario";
    throw bex;
}

什么是使用 Boost.Exception 来学习的好开源项目?

谢谢!

C++ Boost-Exception

评论

0赞 Peter 8/11/2020
为什么要包装一个?为什么不将数据(例如其成员函数的结果)从 复制到启动异常的元数据中?std::exceptionwhat()std::exception
1赞 Phil 8/11/2020
好吧,至少除了字符串之外,我还想捕获异常类型。但是有些异常包含的不仅仅是 what 字符串,所以我是理想主义的,希望我可以简单地包装整个异常。what()

答: 暂无答案