2013-08-02 33 views
3

以下代码中throw语句的用途是什么?在异常的方法签名中抛出语句

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

这是[Goodenough的遗产](http://www.cs.colorado.edu/~bec/courses/csci5535 -s09 /读取/古迪纳夫-exceptions.pdf)。 –

回答

3

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

编辑:

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

+0

也可能值得一提的是它被称为*(动态)异常规范*。 –

+0

完成,我也提到'noexcept'。 –

相关问题