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\
std::exception
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 header.
throw
catch