在 C++ 中,您可以使用异常说明符指定函数可能或不可能抛出异常。例如:
void foo() throw(); // guaranteed not to throw an exception
void bar() throw(int); // may throw an exception of type int
void baz() throw(...); // may throw an exception of some unspecified type
我对实际使用它们持怀疑态度,原因如下:
- 编译器在任何严格的方式下都不能很好地强制执行异常规范,所以其益处并不大。理想情况下,您希望得到一个编译错误。
- 如果函数违反了异常规范,我认为标准行为是终止程序。
- 在VS.Net中,它将throw(X)视为throw(...),所以对标准的遵守程度不高。
您认为应该使用异常规范吗?
请用“是”或“否”回答,并提供一些理由来证明您的答案。