Andrei Alexandrescu, el 30 de julio a las 17:37 me escribiste: > Leandro Lucarella wrote: > >That's not an exception!!!! What's the point of that???? Why don't you > >just write a library function like like enforce but that uses exit(1) > >instead of throwing an exception for that?!?!?! You really want to > >sacrifice the correct behavior for this dumb, dumb "feature"??? > >This really makes me mad! God... > > Relax, we're all on the same boat. To answer each question in sequence: > > 1. The point of that is to terminate the program if the number of > arguments passed is not satisfactory. > > 2. I don't write a library function like enforce that uses exit(1) because: > > 2.1. I'd have to write a ton of them.
No, just one. The same way you don't have to write tons of enforece() functions, you don't have to write tons of die() functions. > 2.2. I don't want to exit(1), I want to correctly propagate an > exception. In this particular case it would exit straight out of > main so it's the same as exit(1) but many scripts have more than one > function. No, you want to cleanly exit the program, the fact that C's exit() might not be appropriate doesn't mean that all exceptions should be treated as user errors. See bug 3462[1]. [1] http://d.puremagic.com/issues/show_bug.cgi?id=3462 > 3. I don't want to sacrifice correct behavior for anything in > particular. It is your view that the behavior you like is correct > and the one I like is incorrect. My view, and the view of most programming languages. And about abort() (this is mostly about stack traces now, but what I really think it's the most serious issue is not using abort()) you're still ignoring the fact that you can't get a debugger pointing to the place where the uncaught exception was originally thrown with your approach. You have multiple options to easily show errors to users, but not the other way around. I think that are very important arguments against your view. > >Plus *ANY* other programming language mark uncaught exceptions as > >OBVIOUS ERRORS (they print traces or abort()). > > Not Perl for example. I don't know whether Java prints the stack by > default or not. Is funny that you use Perl as an example, because Perl doesn't have exceptions. See my other mail with examples of the multiple PL what actually support exceptions and how they print stack traces. -- Leandro Lucarella (AKA luca) http://llucax.com.ar/ ---------------------------------------------------------------------- GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145 104C 949E BFB6 5F5A 8D05) ---------------------------------------------------------------------- SATANAS EN COMISARIA -- Crónica TV _______________________________________________ phobos mailing list [email protected] http://lists.puremagic.com/mailman/listinfo/phobos
