1

来自一次采访的问题。

请解释这段 C++ 代码是什么意思:

void Foo() throw;
4

4 回答 4

10
void Foo() throw;

这是一个语法错误。异常规范(C++98 §15.4)的语法是:

异常规范:

throw ( 类型 ID 列表选项 )

请注意,括号是必需的。


另一方面,

void Foo() throw();

表示该函数Foo()不会抛出任何异常。

于 2010-08-26T12:59:27.273 回答
2

void Foo() throw;格式不正确。

相反void Foo() throw();,意味着函数 'Foo' 被声明为不会引发任何异常

$15.4/10 - “没有异常规范的函数允许所有异常。具有空异常规范的函数 throw() 不允许任何异常。”

于 2010-08-26T12:58:14.633 回答
0

在一次采访中,这个问题提供了一个很好的机会来谈论异常检查;C++ 和 Java 的区别;您的个人喜好和意见;异常检查伤害或帮助的时候等等。这种问题与其说是陈述句法规则的字面上正确的单句答案,不如说是关于邀请您谈论您的编程和思考方式的问题。如果你假装知道的比自己多,或者你的哲学与他们的截然不同,那可能会很危险。

于 2010-08-26T13:01:44.337 回答
0

这意味着开发人员没有使用有意义的函数名......

于 2010-08-26T15:37:31.410 回答