来自一次采访的问题。
请解释这段 C++ 代码是什么意思:
void Foo() throw;
void Foo() throw;
这是一个语法错误。异常规范(C++98 §15.4)的语法是:
异常规范:
throw
(
类型 ID 列表选项)
请注意,括号是必需的。
另一方面,
void Foo() throw();
表示该函数Foo()
不会抛出任何异常。
void Foo() throw;
格式不正确。
相反void Foo() throw();
,意味着函数 'Foo' 被声明为不会引发任何异常
$15.4/10 - “没有异常规范的函数允许所有异常。具有空异常规范的函数 throw() 不允许任何异常。”
在一次采访中,这个问题提供了一个很好的机会来谈论异常检查;C++ 和 Java 的区别;您的个人喜好和意见;异常检查伤害或帮助的时候等等。这种问题与其说是陈述句法规则的字面上正确的单句答案,不如说是关于邀请您谈论您的编程和思考方式的问题。如果你假装知道的比自己多,或者你的哲学与他们的截然不同,那可能会很危险。
这意味着开发人员没有使用有意义的函数名......