C++:指示函数可能会抛出

Pau*_*nta 2 c++ syntax coding-style exception

可能重复:
是否有一个普遍接受的习惯用于指示C++代码可以抛出异常?

如何在代码中指出C++函数可以抛出什么东西?我不是指通过文档,而是通过语法.

例如,我尝试throw(std::exception)在函数声明的末尾放置一个,但是这给了我一个警告说"C++异常规范被忽略,除了表示函数不是__declspec(nothrow)",我猜这意味着编译器忽略了throw并继续好像它不在那里.

我也尝试throw()在声明的末尾添加一个(在括号中没有任何内容),但是 - 与我的期望相反 - 这意味着该函数应该永远不会抛出任何东西:"函数假定不抛出异常而是".

我正在使用throw(...)语法表示函数可能会抛出,因为这不会给我任何错误或警告.关于如何通过语法表明这一点,您有任何其他建议吗?

Bil*_*eal 5

你没有.异常说明符并不意味着"这是我可以抛出的东西",它们的意思是"如果除此之外的任何东西被抛出,请转到std::terminate".这种行为违反了MSVC++不支持它们并且不支持它们的观点.

C++的语义是你必须假设一个函数总能抛出.