grauzone wrote:
dsimcha wrote:
Multiple return values are a horrible substitute for exceptions, because they require the programmer to explicitly check the return value. (When's the last time you checked the return value of printf, or even malloc?) IMHO the best thing about exceptions is that they provide a sane default for error handling: If you don't handle them then you've effectively asserted that they can't happen in your situation. If this "assertion" fails, then our program fails fast and with an error message that massively narrows down where the problem is. I flat-out refuse to program in a language where the default is for errors to be ignored and I have to constantly write explicit error-checking boilerplate even if I don't care about
handling the error.

Exception handling in D (or C++/Java for that matter) isn't that great either. In D, you don't even know what exceptions a function may throw. It's completely dynamic. You may even accidentally catch unknown exceptions, because your catch-filter isn't "narrow" enough.

Java has checked exceptions, but they are misdesigned, get in the programmers way, and generally suck. Feels almost like D copied the standard Java feature by the letter, removing checked exceptions, and call that an improvement.

For my money, D2 exceptions (as designed and described in TDPL) are better than all other exception frameworks, by a mile. This is mainly because D offers a practical methods of handling collateral exceptions (exceptions thrown during the stack unwinding caused by other exceptions).

Also, let's have a look how exceptions improve the robustness of most Java code:

try { something(); } catch (Exception e) { Logger.getLogger().log(e); }

I guess D programmers are just better than D programmers, which makes this example out of place, of course. Or they just let it fall through, until it gets catched by a similar catch-all statement.

Generally, exceptions as they are implemented in some popular languages seem to give the impression that you don't need to care about error handling. That isn't always true and probably only works in small command line tools.

I agree! I'd put it even stronger.


Andrei

Reply via email to