The idea of the why() member was to preserve context when one exception
gets caught and a different one gets thrown, so you could walk back the
chain of why()'s asking what() and where().  I bring it up just as a
design that might be worth resurrecting if it meets your needs.

On Friday, Mar 21, 2003, at 09:24 America/Denver, Alisdair Meredith wrote:

Greg Colvin wrote:

std::exception used to have a why() member that returned the list of
exceptions leading to the one caught.  Is that part of what you want?

Not exactly. I'm not too bothered about the history of the exceptions, I'm simply concerned with formatting useful error messages for users. In order to describe an error usefully/accurately you need as much context as possible, so such messages are most usefully described/formatted as the exception propogates. If you defer all message-formatting until some outer catch block you need to also leak sufficient implementation detail and knowledge to form that message.

In the ideal library, such context information is only accumulated
during exception propogation, and would not interfere with the exception
handling system at all (no catch blocks, some sort of
RAII/ScopeGuard-like object) To that extent, all that is really needed
is a known stringstream per thread of execution, and some way to defer
diagnostic generation unless an exiting the block due to exception
propogation.


To an extent, rather than missing why() I am looking for a replacement
for what() as well!!  Among other things I hear that can cause problems
for localising error messages (something else this scheme should
address) although I am lucky enough not to have to deal with such
problems myself.

--
AlisdairM

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

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

Reply via email to