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...
};
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
Declaring exceptions is a bad idea. From http://www.gotw.ca/publications/mill22.htm :
Moral #1: Never write an exception specification.
Moral #2: Except possibly an empty one, but if I were you I’d avoid even that.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With