在异常的方法签名中抛出语句

时间:2013-08-02 17:20:39

标签: c++ exception

以下代码中throw语句的用途是什么?

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

1 个答案:

答案 0 :(得分:3)

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

编辑:

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