C++ Do I need to write throw clause for a function everywhere?
c++, declaration, exception
Solution
Omitting a exception specification means that your function can throw any exception.
Exceptions specifications are bad. There are hardly any compilers which implement the feature correctly. They have been deprecated since the C++11 Standard. In fact Exception specifications were considered a failed experiment even while they were a part of the C++03 standard.
Good Read: A Pragmatic Look at Exception Specifications
Problem
Before Consider to have a class and a global function: This is, for example, `usefulfuncts.hpp` ``` void dosome(int a, int b) throw (std::exception); ``` This is `usefulfuncts.cpp` ``` void dosome(int a, int b) throw (std::exception) { //... } ``` And this is aclass.hpp ``` class aclass { // Members... friend void dosome(int a, int b) throw (std::exception); // Members... }; ``` After (what I would like that to be) Ok! I would like to understand if it is strictly necessary to write everytime the `throw` clause. So for example can I do this? This is `usefulfuncts.hpp` ``` void dosome(int a, int b) throw (std::exception); ``` This is `usefulfuncts.cpp` ``` void dosome(int a, int b) { /* OMITTING IT! */ //... } ``` And this is aclass.hpp ``` class aclass { // Members... friend void dosome(int a, int b); /* OMITTING IT */ // Members... }; ``` Is this right? To put it only in the main declaration? Thanks