The Right Approach to Exceptions
Pavel Vozenilek
pavel_vozenilek at hotmail.com
Sun Feb 19 12:17:24 PST 2012
On Sun, 19 Feb 2012 03:04:35 +0100, Alf P. Steinbach
<alf.p.steinbach+usenet at gmail.com> wrote:
> However, C++ exceptions do have many problems, including:
>
> * Until C++11, no support for propagating exceptions through
> non-exception-aware code (in particular, from C callbacks).
>
> * No support for wchar_t exception text, i.e. *nix-specific.
>
> * A nonsensical exception class hierarchy with e.g.
> std::logic_error and std::bad_exception.
>
> * No differentiation between recoverable (soft, failure) and
> unrecoverable (hard, error) exceptions, although some people have
> argued that in the latter case one is screwed anyway.
>
> * Involving std::string arguments, so that in low memory
> conditions throwing an exception can itself throw.
>
Two even worse problems:
a) you see
foo();
and have no idea whether and what it may throw. No, the documentation is
never so detailed and I woudn't trust it anyway.
b) you see
try {
foo();
} catch (some_exc& e) {
handle(e);
}
and have no easy way to check whether the 'some_exc' can be really thrown
from inside foo(). Maybe not and they forgot to remove the catch.
c) you see
try {
foo();
} catch (some_exc& e) {
handle(e);
}
and there's no easy way to spot that the 'some_exc' is already fully
handled inside and thus is useless here.
The Java way is overkill but complete ignorance by the compiler isn't good
either.
/Pavel
More information about the Digitalmars-d
mailing list