Re: Unhandled exception - How to turn off!
"Ulrich Eckhardt" <eckhardt@satorlaser.com> wrote in message
news:3357d4-dmp.ln1@satorlaser.homedns.org...
Ben Voigt wrote:
You want new to return NULL in case of failure instead of throwing?
You're now (since C++03 I think) supposed to do:
new (std::nothrow) T[N];
to get that functionality.
FYI: You have been supposed to do that since the C++ standard was created.
Other than that, not using exception handling is IHMO stupid, you are
throwing out one of the most interesting features of C++ along with its
whole standardlibrary (which relies on exceptions).
Well, as I see it, it's linking with the standard library that should get
you the throwing behavior. Using the C runtime only, ought to get you a
version of new that doesn't throw objects in the standard C++ library. It's
against the spirit of C and C++, which is providing a very extensible
language, and functionality through libraries, not language, to have a
language keyword (new) force the user to include a particular library
(std::*). Luckily, that's only the default implementation of new, and
std::bad_alloc doesn't actually have a privileged place -- you can easily
redefine new to use your own exception type, or none at all -- and this is
important -- using the same mechanism by which the default new is provided.
I despise architectures like, Java, where they claim a small language with
few keywords, extensible by libraries, but half the standard library
receives special handling from the compiler (Object, String,
OutOfMemoryException, just to name a few) that you can never achieve for
your own code.