From: "William E. Kempf" <[EMAIL PROTECTED]> > Peter Dimov said: [...] > > But if every level of the call stack does such a translation, there's no > need for who() to begin with. open_file() knows it was thrown by > is_directory(), because it called is_directory(). change_config() knows > it was thrown by open_file(), because it called open_file(). And on up > the call stack.
Correct. But not every level of the call stack needs to do such a translation... and in practice, I'd expect that no translation would be necessary at all for a typical filesystem implementation. > > who() is not the _exact_ function name that has thrown the exception. It > > identifies the action that failed, using documented function names as > > idetifiers. As a QoI issue, the library will return a who() string that > > is the best representation of the action that failed. > > > > In particular, if open_file() calls, under the hood, > > detail::open_file_impl, it should _not_ throw exceptions with > > "detail::open_file_impl" as a who() string. > > I.e. you advocate who() only relying upon the implementation to change the > value as it moves up the call stack (whether that be a conceptual call > stack or a physical program call stack matters little here). As long as > you're doing that... I see nothing that who() provides that's not already > present in the program context, as I pointed out above. No, I don't advocate anything like that. In the above example detail::open_file_impl would throw an exception with who() == "open_file"; it is not allowed to use an undocumented function name. There would be no need for any translation. Translation is only necessary when a documented library function calls another documented library function as an implementation detail _and_ the failed action would be better described by the caller name, not the callee name. Such situations may indicate problems with the library design. [...] > > Using an undefined "recover" verb is typical for such discussions. :-) > > > > No, I don't want to recover. I want to inform the user what happened. > > Recovery still takes place here. If you insist. Using undefined terms allows you to make all sorts of statements. _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost