Le 2010-07-30 à 1:01, Andrei Alexandrescu a écrit :

> Exception messages are meant to be seen by users.

I disagree.

The error message of an exception might be meaningful in a small program that 
does only one thing at a time, but in general to give the user an 
understandable error message you need more context information.

For instance, say you have a command line program that takes as input a HTTP 
URL and downloads a web page with all its related content. Outputting an error 
such as "Socket could not connect to host 1.2.3.4 on port 80: timeout" is quite 
cryptic because you don't even know which sub-resource it was trying to fetch, 
nor why it fetched that resource (it might be that the HTML parser didn't get 
the domain name correctly). And anyway it's probably a bug because it should 
just have skipped that resource and went on. If you want to debug that you need 
a stack trace to know which resource handler should have caught that exception, 
and you might want to attach the debugger to stop when the uncaught exception 
is thrown and inspect the circumstances.

And you probably don't want to handle localization inside the exception 
handling mechanism either.

Also, for GUI programs an uncaught exception is always a bug because it'll make 
the application suddenly quit with no message visible to the user. Exiting a 
GUI application with abort() on OSX will ensure that the OS shows an error 
message about the application having crashed, and for GUI applications OSX will 
save a quite helpful crash report the user can then send to the developer. You 
don't want uncaught exceptions to silently quit the application and just be 
logged to the system console with no stack trace.

So I believe in the vast majority of cases calling abort() and showing a stack 
trace is what you want. That's what most other languages do. It's easy to get 
what Andrei wants with a "try {...} catch (Exception e) { writeln(e); exit(-1); 
}" in the main, but I'd generally recommend against this.

-- 
Michel Fortin
[email protected]
http://michelf.com/



_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos

Reply via email to