While designing my first 'serious' C++ library, I'm asking myself:
Is it good style to derive ones exceptions from
std::exception and it's offsprings?!
Even after reading
I'm still not sure. Because, besides common (but maybe not good) practice, I would assume, as a library user, that a library function would throw
std::exceptions only when standard library functions failed in the library implementation, and it can't do anything about it. But still, when writing application code, for me it's very convenient, and also IMHO good looking to just throw a
std::runtime_error. Also my users also can rely on the defined minimum interface, like
what() or codes.
And for example, my user supplies faulty arguments, what would be more convenient, than to throw a
std::invalid_argument, wouldn't it?
So combined with the yet common use of std::exception I see in others code:
Why not go even further and derive from your custom exception class (e.g. lib_foo_exception) and also from