gpt4 book ai didi

c++ - 如何替换动态异常规范 : throw(. ..)

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:42:23 25 4
gpt4 key购买 nike

我正在开发一个使用遗留库的项目,该库使用像

这样的函数定义
void func() throw(some_exception);

dynamic exception specifications在 C++17 中被删除我想知道如何解决这个问题。

  1. P0003R0建议更换

    void func() throw(some_exception)
    {
    /* body */
    }

    用类似的东西

    void func()
    {
    try
    {
    /* body */
    }
    catch(const some_exception&) {
    throw;
    }
    }

    但是,我无权访问源代码(只能访问头文件)。

  2. 所以我只能尝试“修复” header 中的函数定义。所以例如我会写

    void func() noexcept(false);

    但是当函数抛出异常时,我的应用程序仍然终止。

我如何更改头文件中的函数定义或可能调整我自己的项目(我使用 func 的地方)以获得与 throw(some_exception) 相同的行为在 C++17 之前有吗?

最佳答案

只需删除动态异常规范。这就是您需要做的全部。

C++ 不是 Java;在 C++ 中,所有函数(在语言级别)都假定会抛出任何异常,除非它们被标记为 noexcept。因此,如果您删除异常规范,它将像以前一样工作。

关于c++ - 如何替换动态异常规范 : throw(. ..),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54239292/

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