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


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

Reply via email to