以下代码中throw语句的用途是什么?在异常的方法签名中抛出语句
struct MyException : public exception
{
const char * what() const throw()
{
return "C++ Exception";
}
};
以下代码中throw语句的用途是什么?在异常的方法签名中抛出语句
struct MyException : public exception
{
const char * what() const throw()
{
return "C++ Exception";
}
};
它告诉编译器(和读者),这个函数将不会通过异常退出。更重要的是,在这种情况下, 告诉编译器和读者,这个 函数的所有过载必须满足相同的条件。 (在这种情况下,它是 可能存在,因为该函数what
被声明在此std::exception
方式 )
编辑:
这被称为异常规范,并且由于C++ 11, 进来两种形式:throw()
和noexcept
。并且 throw()
还允许在括号中指定类型名称,在这种情况下,您保证不会将任何不兼容的 与这些类型抛出。 (在C++ 11语法中,throw()
表格 被称为动态异常规范。)
也可能值得一提的是它被称为*(动态)异常规范*。 –
完成,我也提到'noexcept'。 –
这是[Goodenough的遗产](http://www.cs.colorado.edu/~bec/courses/csci5535 -s09 /读取/古迪纳夫-exceptions.pdf)。 –