|
Boost : |
From: Beman Dawes (bdawes_at_[hidden])
Date: 2003-01-13 21:20:10
At 03:29 PM 1/13/2003, David Abrahams wrote:
>Remember that it's a bad idea to carry dynamically-allocated state in
>an exception object.
I wrestled with that a long time with the Filesystem Library, and finally
ignored it. The advice is good in general, but there just didn't seem to be
any way to meet the needs of users without carrying several paths (which
contain std::strings.)
> Translating to readable strings at the throw
>point is ill-advised.
Operating systems provide useful information (error descriptions translated
into the local language, for example) which are easy to supply as readable
strings as part of the exception, and hard for users to supply (because the
user code would be non-portable). Thus the filesystem exceptions supply a
nice, ready-to-use, what() message. For those users who want to roll their
own, the detailed member functions supply detailed information. It seems to
work well in practice, at least so far, and the exception mechanism is
proportional in complexity to the rest of the library. All the alternatives
I could think of (subsidiary classes and functions, adding levels of
indirection) seemed way overcomplicated.
--Beman
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk