David Abrahams wrote:
> 
> Alexander Terekhov <[EMAIL PROTECTED]> writes:
> 
> > Terje Slettebų wrote in message <[EMAIL PROTECTED]>:
> > [...]
> >>  > why shouldn't std::exception use std::strings?
> >>
> >> See here (http://www.boost.org/more/error_handling.html).
> >
> > "....
> >  Unfortunately, operating systems other than Windows also wind non-C++
> >  "exceptions" (such as thread cancellation) into the C++ EH machinery
> >  ...."
> >
> > There's no such thing as 'non-C++ "exceptions"'.
> 
> Exceptions that have no C++ type associated with them and exceptions
> which are thrown by the system under conditions which the standard
> does not allow for (e.g. asynchronous exceptions without the presence
> of user-invoked undefined behavior) are what I mean by "non-C++
> exceptions".

First off, I was talking about *synchronous* stuff -- things like
<http://groups.google.com/groups?selm=3D873ADF.DA0444B1%40web.de>

<copy&paste>

 pthread_exc_aritherr_e  Unhandled floating-point exception signal 
                         ("arithmetic error")  

 pthread_exc_decovf_e    Unhandled decimal overflow exception  

 pthread_exc_excpu_e     "cpu-time limit exceeded"  

 pthread_exc_exfilsiz_e  "File size limit exceeded"  

 pthread_exc_exquota_e   Operation failed due to insufficient quota  

 pthread_exc_fltdiv_e    Unhandled floating-point/decimal divide by 
                         zero exception  

 pthread_exc_fltovf_e    Unhandled floating-point overflow exception  

 pthread_exc_fltund_e    Unhandled floating-point underflow exception  

 pthread_exc_illaddr_e   Data or object could not be referenced  

 pthread_exc_illinstr_e  Unhandled illegal instruction signal 
                         ("illegal instruction")  

 pthread_exc_insfmem_e   Insufficient virtual memory for requested 
                         operation  

 pthread_exc_intdiv_e    Unhandled integer divide by zero exception  

 pthread_exc_intovf_e    Unhandled integer overflow exception  

 pthread_exc_noexcmem_e  Out of memory while processing an exception  

 pthread_exc_nopriv_e    Insufficient privilege for requested 
                         operation  

 pthread_exc_privinst_e  Unhandled privileged instruction fault 
                         exception  

 pthread_exc_resaddr_e   Unhandled reserved addressing fault 
                         exception  

 pthread_exc_resoper_e   Unhandled reserved operand fault 
                         exception  

 pthread_exc_SIGABRT_e   Unhandled signal ABORT  

 pthread_exc_SIGBUS_e    Unhandled bus error signal  

 pthread_exc_SIGEMT_e    Unhandled EMT signal  

 pthread_exc_SIGFPE_e    Unhandled floating-point exception signal  

 pthread_exc_SIGILL_e    Unhandled illegal instruction signal  

 pthread_exc_SIGIOT_e    Unhandled IOT signal  

 pthread_exc_SIGPIPE_e   Unhandled broken pipe signal  

 pthread_exc_SIGSEGV_e   Unhandled segmentation violation signal  

 pthread_exc_SIGSYS_e    Unhandled bad system call signal  

 pthread_exc_SIGTRAP_e   Unhandled trace or breakpoint trap 
                         signal  

 pthread_exc_subrng_e    Unhandled subscript out of range 
                         exception  

 pthread_exc_uninitexc_e Uninitialized exception raised  

 pthread_exit_e          Thread exiting using pthread_exit()  

 pthread_stackovf_e      Attempted stack overflow was detected  

</copy&paste>

that basically use a synchronous-signal-to-exception "translation" 
ala: <http://lists.boost.org/MailArchives/boost/msg36232.php>

"....
 just like any other SEH/C-exception beast, I believe [but there 
 should be a way to control "hardware"/synchronous-signals stuff 
 ala exc_raise_signal_exception()[1]; 
 ....
 [1] 
http://tru64unix.compaq.com/docs/base_doc/DOCUMENTATION/V51A_HTML/ARH9MBTE/VNTPRCSS.HTM#exc-sig-hand-coexistence
 ...."

Well, it is true that there's no standard that would *require* 
them to be "named" C++ exceptions: 
<http://google.com/groups?selm=5Gml8.1103%24fL6.23421%40news.cpqcorp.net>

"....
 At one point, we tried to work with the C++ team to develop a way 
 for C++ programmers to catch() cancel and exit by name -- for 
 various reasons, that never shipped.
 ...."

However, with respect to cathing, they're basically the same as 
rather funny Sutter's "DieDieDie" *native C++* beasts:
<http://lists.boost.org/MailArchives/boost/msg34151.php>

"....
 void DieDieDie() // unwind back to the last "catch(...)"
 {
   class LocalClass {};
   throw LocalClass();
 }
 ...."

Now, speaking of asynchronous exceptions (async-cancel-safety)...
currently, I have really nothing to add to what I wrote previously 
(see <http://.google.com/groups?selm=3DF7647E.C84435BC%40web.de> 
if you want).

> 
> > Brain-damaged forced unwinding aside for a moment, an implementation
> > provided exceptions for thread exit, cancelation... AND
> > synchronous-signals-translated- to-exceptions ARE "normal" C++
> > exceptions.
> 
> That really depends on the implementation.
> 
> > And, BTW, it's quite reasonable to expect that they're all derived
> > from std::exception...
> 
> Except that they're not even always C++ types (c.f. Microsoft).
> 
> > "....
> >  if every exception were derived from std::exception and everyone
> >  substituted catch(std::exception&) for catch(...), the world would
> >  be a better place.
> >  ...."
> >
> > The world WILL be a better place when people finally realize that
> > C++ DOES need a mandatory 2-phase exception handling and that the
> > current C++ standard is seriously broken with respect to exceptions
> > specs (plus a few other "less important" EH-related things). It
> > desperately needs some fixing.
> 
> So quit complaining ineffectively and submit a DR with suggested
> wording changes.  [That is a non-boost issue, BTW.  If you want to
> discuss it, you should take it elsewhere]

I've just forwarded to you my reply to a message that I was asked to
"NOT POST to wide-distribution email distributions (e.g., Boost, 
Austin Group) or newsgroups". Back then, I wrote the following to a 
person who contacted me:

"....
 Well, could you please [at the October 2002 meeting] sensor a bit 
 "the situation"/climate with respect to general desire/ability to 
 change anything at all in the C++ exception handling. I mean: would 
 people be ready/interested to seriously talk/thing about:

 bool expected_exception<T>();
 ...."

He hasn't yet replied... well, perhaps YOU could shed some light? ;-)

regards,
alexander.

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to