Re: Clarification needed for 18.6.4: terminate() and uncaught_excaption()
On Aug 8, 6:19 am, AlbertoBarb...@libero.it (Alberto Ganesh Barbati)
wrote:
Eric Niebler ha scritto:
bool uncaught_exception() throw();
Returns: true after completing evaluation of a
throw-expression until either completing
initialization of the exception-declaration in
the matching handler or entering unexpected()
due to the throw; or after entering terminate()
for any reason other than an explicit call to
terminate().
I can read this two ways:
1) Returns true after <blah> or after entering terminate() ...
2) Returns true after <blah> until either ... or after entering
terminate() ...
If I choose the second reading, the program should print "HERE". If I
choose the first, it shouldn't. What is the intention?
FWIW, I believe the intent is the first one, for two reasons:
..
2) with reading number 2, uncaught_exception() will never be true inside
terminate(), whether the call has been explicit or not. Checking
uncaught_exception() inside terminate() might be of some use, so why
lose such capability? Moreover, the phrase "for any reason other than an
explicit call" would be redundant.
No. uncaught_exception() will be true inside terminate() if
terminate() is called explicitly while unwinding the stack. That might
be more useful (or might not; I don't actually see much use either
way).
In fact, with reading #1 it seems redundant, because when is
terminate() called implicitly that wouldn't be covered by the first
part of the paragraph?
Yechezkel Mett
---
[ comp.std.c++ is moderated. To submit articles, try just posting with ]
[ your news-reader. If that fails, use mailto:std-c++@ncar.ucar.edu ]
[ --- Please see the FAQ before posting. --- ]
[ FAQ: http://www.comeaucomputing.com/csc/faq.html ]