c ++:std :: exception的what()方法中的奇怪语法

Pat*_*ity 3 c++ exception

当我继承std::exception以定义我自己的异常类型时,我需要覆盖what()具有以下签名的方法:

virtual const char* what() const throw();
Run Code Online (Sandbox Code Playgroud)

这对我来说肯定很奇怪,就像签名中有两个方法名称一样.这是一些非常具体的语法,就像纯虚方法一样,例如:

virtual int method() const = 0;
Run Code Online (Sandbox Code Playgroud)

或者这是一个功能,也可能以某种方式在另一个上下文中使用?如果是这样,它可以用于什么?

pmr*_*pmr 12

它被称为exception specifications.在throw()不允许任何例外,从这个方法内抛出throw(int)将只允许类型的异常int被抛出.

异常规范将在C++ 0x中删除.给出了很好的原因解释.