C++我是否需要为函数编写throw子句?

And*_*dry 4 c++ exception-handling exception declaration

之前

考虑拥有一个类和一个全局函数:

例如,这是 usefulfuncts.hpp

void dosome(int a, int b) throw (std::exception);
Run Code Online (Sandbox Code Playgroud)

这是 usefulfuncts.cpp

void dosome(int a, int b) throw (std::exception) {
   //...
}
Run Code Online (Sandbox Code Playgroud)

这是aclass.hpp

class aclass {
   // Members...
   friend void dosome(int a, int b) throw (std::exception);
   // Members...
};
Run Code Online (Sandbox Code Playgroud)

之后(我希望如此)

好!我想了解是否必须每次都写这个throw条款.那么我可以这样做吗?

这是 usefulfuncts.hpp

void dosome(int a, int b) throw (std::exception);
Run Code Online (Sandbox Code Playgroud)

这是 usefulfuncts.cpp

void dosome(int a, int b) { /* OMITTING IT! */
   //...
}
Run Code Online (Sandbox Code Playgroud)

这是aclass.hpp

class aclass {
   // Members...
   friend void dosome(int a, int b); /* OMITTING IT */
   // Members...
};
Run Code Online (Sandbox Code Playgroud)

这是正确的吗?只把它放在主要声明中?谢谢

Alo*_*ave 12

省略异常规范意味着您的函数可以抛出任何异常.

例外规格很糟糕.几乎没有任何编译器正确实现该功能.自C++ 11标准以来,它们已被弃用.实际上,Exception规范被认为是一个失败的实验,即使它们是C++ 03标准的一部分.

好读:
对例外规范的务实看法