相关疑难解决方法(0)

在c ++异常结构中的函数声明之后的throw()?

这是来自http://www.tutorialspoint.com/cplusplus/cpp_exceptions_handling.htm

#include <iostream>
#include <exception>
using namespace std;

struct MyException : public exception
{
  const char * what () const throw ()
  {
    return "C++ Exception";
  }
};
Run Code Online (Sandbox Code Playgroud)

我理解const后面的what意思是函数不修改结构的任何成员,但throw()最后的意思是什么?

c++ struct exception

18
推荐指数
3
解决办法
1万
查看次数

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

我正在使用遗留库的项目上工作,该遗留库使用函数定义如

void func() throw(some_exception);
Run Code Online (Sandbox Code Playgroud)

由于动态异常规范在C ++ 17中已删除,所以我想知道如何解决此问题。

  1. P0003R0建议更换

    void func() throw(some_exception)
    {
        /* body */ 
    }
    
    Run Code Online (Sandbox Code Playgroud)

    用类似的东西

    void func()
    {
        try
        {
            /* body */
        }
        catch(const some_exception&) {
           throw;
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

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

  2. 因此,我只能尝试“修复”标头中的函数定义。所以例如我可以写

    void func() noexcept(false);
    
    Run Code Online (Sandbox Code Playgroud)

    但是,当函数引发异常时,我的应用程序仍会终止。

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

c++ exception throw c++17

5
推荐指数
1
解决办法
665
查看次数

2
推荐指数
1
解决办法
2899
查看次数

标签 统计

c++ ×3

exception ×3

c++17 ×2

struct ×1

throw ×1