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
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