On Saturday, February 18, 2012 20:30:45 Andrei Alexandrescu wrote: > On 2/18/12 6:40 PM, H. S. Teoh wrote: > > One word: internationalization. Then toString() falls flat on its face. > > No. I happen to have some expertise in the area as I've participated to > two large and heavily internationalized systems. i18n has everything to > do with string tables and formatting templates and emphatically nothing > to do with exception hierarchies. The only possible link is that > exceptions should provide the necessary hooks.
They do in that if you want to print a message because of that exception, you need to print something in the correct language, and that won't work with toString unless the exception type has built-in internationalization of some kind - regardless of what that internationalization mechanism might be. Regardless, it's going to generally be better to generate an application- specific error message than just print out whatever Exception outputs with toString (internationalized or otherwise). And you can't do that if all you have to work with is toString. To do that, you need actual data on what went wrong, which requires additional member variables, which means using a specific exception type. - Jonathan M Davis