3

下面代码中 throw 语句的目的是什么?

struct MyException : public exception
{
  const char * what () const throw ()
  {
    return "C++ Exception";
  }
}; 
4

1 回答 1

3

它告诉编译器(和读者)这个函数永远不会通过异常退出。更重要的是,在这种情况下,它告诉编译器和读者该函数的所有重载必须满足相同的条件。(在这种情况下,它可能存在,因为函数what是在 . 中以这种方式声明的std::exception。)

编辑:

这称为异常规范,从 C++11 开始,有两种形式:throw()noexcept. 并且该表单 throw()还允许在括号中指定类型名称,在这种情况下,您保证不会抛出与这些类型不兼容的任何内容。(在 C++11 语法中,这种throw()形式被称为动态异常规范。)

于 2013-08-02T17:23:47.427 回答