> From: Beman Dawes <[EMAIL PROTECTED]> > At 11:18 AM 1/10/2003, William E. Kempf wrote: > >> From: David Abrahams <[EMAIL PROTECTED]> > >> "William E. Kempf" <[EMAIL PROTECTED]> writes: > >> >> From: Martin Brown <[EMAIL PROTECTED]> > >> >> > >> >> 2. The user needs a localised error message. > >> > > >> > Is the textual representation of the exception name > >> > enough? If not, how do you propose a library provide > >> > such a localised error message? > >> > >> I will weigh in here with one strong opinion: producing localized > >> error messages should not be the job of the exception object or the > >> code which throws it. Error message formatting and localization > >> should happen after exceptions are caught. > > > >Full agreement. But what (if anything) must the exception object > >provide in order for the exception handlers to be able to format > >a localized message? > > Peter Dimov and I went back and forth about this for the filesystem library > and decided: > > ... what() // from std::runtime_error. Implementation provides > // a very explicit message, including who(), path1(), > // path2(), and message reported by O/S (which is > // subject to locale on some O/S's. > > int native_error() const; > // a return of 0 implies a library (rather than system) error > > error_code error() const; // filesystem defined error code > > const std::string & who() const; // name of func throwing exception > > const path & path1() const; // argument 1 to func; may be empty() > const path & path2() const; // argument 2 to func; may be empty() > > That's pretty heavyweight, but each function has important uses.
This description brings a better understanding than what I had previously, but doesn't fill in all the gaps. What's the purpose of a non-native error code? For that matter, if what() includes a translated message for the error code, what purpose is there for the native error code? > For Boost.Threads, path1() and path2() obviously don't apply, but I > wouldn't be surprised if a string identifying the thread in some way wasn't > a possible need. The thread will always be the current thread, so there's no need to carry that payload. William E. Kempf [EMAIL PROTECTED] _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost