On Mon, Feb 16, 2004 at 03:03:10PM +0100, Julian Mehnle wrote: > Andrew Suffield wrote: > > On Sun, Feb 15, 2004 at 09:43:23PM +0100, Matthias Urlichs wrote: > > > Every error whatsoever throws an exception. That's far better from a > > > quality POV than to check the error return of > > > _every_single_statement_, because (a) nobody actually programs that > > > way, and (b) if you actually do program that way your code will be > > > twice as long and ten times as unreadable. > > > > However, it results in code that throws exceptions to the user rather > > than useful error messages, which is amateurish. The user should never > > see an exception unless there is a bug in your code; errors from the > > system should be handled properly. This *does* make your code twice as > > long, but it will not make it any less readable if you do it > > right. Failing to do it is like failing to test your code before > > releasing it, or trusting data read from the network - it is not > > something that has any place in a serious program. > > That's an invalid conclusion. In every language that supports > exceptions, you can very well have a global exception handler that > catches any uncaught exceptions and presents them to the user in a > nice way. No you can't. I'd be mildly interested in seeing a handler that could handle any exception and generate a suitable error message that was not of infinite length (because it can't be done). Note that you have to do this for exceptions you receive from things you call. Here's a suitably contrived example that can't be simulated in the way you describe: if (open $foo, $bar) { /* do stuff */ return 1; } die "Failed to open $bar: $!" unless $! == ENOENT; if (open $foo, $baz) { /* do stuff */ return 1; } die "Failed to open $baz: $!" unless $! == ENOENT; print STDERR "Neither $bar nor $baz were found\n"; return 1; Here the "special" (common) case of two non-existant files has been handled differently to generate an informative error. -- .''`. ** Debian GNU/Linux ** | Andrew Suffield : :' : http://www.debian.org/ | `. `' | `- -><- |
Attachment:
signature.asc
Description: Digital signature