当我从 std::exception
继承以定义我自己的异常类型时,我需要覆盖具有以下签名的 what()
方法:
virtual const char* what() const throw();
这对我来说肯定很奇怪,就像签名中有两个方法名称一样。这是一些非常具体的语法吗,比如纯虚方法,例如:
virtual int method() const = 0;
或者这是一个可以以某种方式在其他上下文中使用的功能?如果是这样,它可以用来做什么?
最佳答案
它被称为异常规范
。 throw()
不允许从该方法内部抛出任何异常 throw(int)
只允许类型为 int
的异常被抛出。
异常规范将在 C++0x 中删除。 This很好地解释了原因。
关于c++: std::exception 的 what() 方法中的奇怪语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2903882/