这是来自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()最后的意思是什么?
我正在使用遗留库的项目上工作,该遗留库使用函数定义如
void func() throw(some_exception);
Run Code Online (Sandbox Code Playgroud)
由于动态异常规范在C ++ 17中已删除,所以我想知道如何解决此问题。
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)
但是,我无权访问源代码(仅头文件)。
因此,我只能尝试“修复”标头中的函数定义。所以例如我可以写
void func() noexcept(false);
Run Code Online (Sandbox Code Playgroud)
但是,当函数引发异常时,我的应用程序仍会终止。
如何更改头文件中的函数定义或可能调整我自己的项目(我使用的地方func)以获得与throw(some_exception)C ++ 17之前相同的行为?