Re: Exception class with shift operator
Jorgen Grahn wrote:
Do people generally inherit from the standard exception classes?
When using exceptions, it usually looks like this:
try {
... // lots of stuff
} catch( std::exception const& e) {
...
}
IOW, I usually don't care which exception occurred, but I do care that it is
derived from std::exception because otherwise I need to add additional
catch() clauses. In many cases I just throw std::runtime_error, because it
allows me to give a string message to its constructor. In other cases,
where I need a special exception[1], I also usually derive them from
runtime_error, because that already carries the string.
Uli
[1] Typically one that carries errorcodes from a C API:
struct errno_exception: runtime_error {
errno_exception( char const* function, int e, char const* comment = 0);
};
void* x = malloc(100);
if(!x)
throw errno_exception( "malloc", ENOMEM);
Note: the above code is in fact only semi-complete, because 'x' doesn't
handle the resource it handles in an exception-safe way.
--
Sator Laser GmbH
Gesch??ftsf??hrer: Michael W??hrmann, Amtsgericht Hamburg HR B62 932
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]