John M Gant John M Gant -4 years ago 51
C++ Question

Should I inherit from std::exception?

I've seen at least one reliable source (a C++ class I took) recommend that application-specific exception classes in C++ should inherit from

. I'm not clear on the benefits of this approach.

In C# the reasons for inheriting from
are clear: you get a handful of useful methods, properties and constructors and just have to add or override what you need. With
it seems that all you get is a
method to override, which you could just as well create yourself.

So what are the benefits, if any, of using
as a base class for my application-specific exception class? Are there any good reasons not to inherit from

Answer Source

The main benefit is that code using your classes doesn't have to know exact type of what you throw at it, but can just catch the std::exception.

Edit: as Martin and others noted, you actually want to derive from one of the sub-classes of std::exception declared in <stdexcept> header.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download