I've seen at least one reliable source (a C++ class I took) recommend that application-specific exception classes in C++ should inherit from std::exception
. I'm not clear on the benefits of this approach.
In C# the reasons for inheriting from ApplicationException
are clear: you get a handful of useful methods, properties and constructors and just have to add or override what you need. With std::exception
it seems that all you get is a what()
method to override, which you could just as well create yourself.
So what are the benefits, if any, of using std::exception
as a base class for my application-specific exception class? Are there any good reasons not to inherit from std::exception
?