Re: Exception Misconceptions: Exceptions are for unrecoverable
errors.
On Dec 22, 3:46 pm, r...@zedat.fu-berlin.de (Stefan Ram) wrote:
"dragan" <spambus...@prodigy.net> writes:
Whereas the exception machinery in C++ was developed
primarily to handle and RECOVER from more errors more
elegantly than was possible without exceptions, the statement
is highly suspect.
More elegantly? Actually, for correct and secure C++ code,
all functions need to be written to be =BBexception safe=AB, but
only a minority of C++ programmers does so or even is aware
of it.
Just a nit, but the same holds true in any language which
supports exceptions. All code must be written with the fact
that some (or all, in the case of languages like Java) functions
can return via an exception, rather than the normal path.
Those "unrecoverable errors" are probably the things that
assertion checking weeds out during development time rather
than being an application for exception machinery.
These are distinct concepts for me: An unrecoverable error
can occur when a program needs 10 Bytes of allocated
storage, but this storage is not available. The program can
not generate more storage, so the error is not recoverable,
but it also can not be weeded out during developement time.
That's a particular definition of "unrecoverable". Is it the
one the original poster meant? I don't know.
Also, you know as well as I do that your example is simplified,
and only speaks of the general case. There are cases where you
attempt to allocate a large amount of memory, but can use a fall
back strategy in case of failure. I'd certainly be very upset
if, on trying to output data to a (non-essential) log, I got a
bad_alloc exception (especially if the logging was taking place
in a destructor, called because I'm unwinding the stack because
of another exception).
Futher discussion of the application of exceptions is
appreciated.
I prefer error results to exceptions. So all I would write
about exceptions would start with =BBIf I was forced to use a
language that would force me to use exceptions ...=AB
I prefer to have a number of different tools in my toolbox, and
to use which ever one is most effective for the job at hand.
--
James Kanze