Certo, per esempio potresti farla derivata da std::exception, in modo che possa essere gestita anche un generico:

codice:
catch(std::exception& )
Un esempio:
codice:
class MyException : public std::exception
{
public:
MyException(std::string s) { error = s; }
~MyException() throw() {}

virtual const char * what() const throw()
{
return error.c_str();
}

private:
std::string error;
};