POV-Ray : Newsgroups : povray.off-topic : Programming language discussion : Re: Programming language discussion Server Time
4 Sep 2024 01:20:41 EDT (-0400)
  Re: Programming language discussion  
From: Orchid XP v8
Date: 23 Oct 2010 13:46:32
Message: <4cc31f78$1@news.povray.org>
On 23/10/2010 05:39 PM, Darren New wrote:

> I don't think it's "expected vs severe", at least not in code where
> people have thought about it. It's more "errors you're likely going to
> want to handle right where they happen (such as not being able to open
> the file you're trying toopen)" vs "errors you likely have a more global
> catch for (such as divide by zero or out of disk space)".

Makes sense.

> The advantage of the exception mechanism is you can catch a bunch of
> exceptions anywhere in a bunch of called routines with one catch.

True enough.

[In Haskell, exceptions carry the disadvantage that due to lazy 
evaluation, it can be a tad unpredictable exactly when an exception will 
be thrown. Also, you can only catch these exceptions in the IO monad, 
which might be a very, very long way away from where the exception 
happened...]

> And I think that's where Java's checked exceptions concept fails: They
> explicitly turn the things you want to test for into exceptions, then
> require you to test for them anyway with a much more tedious and
> distracting syntax.

Heh, yeah, there is that. In all the Java code I've looked at, I don't 
think I've ever seen a try/catch block which actually *handles* an 
exception. They all just silently ignore it. (Then again, I haven't 
looked at a lot of exception code...)



There's a couple of people on the Haskell mailing lists who like to 
distinguish between "exceptions" and "errors" (and get all shirty when 
people claim that they're the same thing).

As far as I can tell, an "error" is a situation that arises due to a bug 
in your program, whereas an "exception" is when a situation is caused by 
external events that you can't control.

For example, division by zero or an invalid array index would be errors. 
(Your program should be constructed such that these never happen for any 
reason.) Trying to open a file that doesn't exist would be an exception. 
(Even if you check that the file exists, it could theoretically cease to 
exist by the time you go to open it.)

Some people have even gone as far as to suggest that it's a design flaw 
that errors can be caught. But of course, if it were not so then a mere 
coding glitch could crash a production system with no possibility of 
exiting gracefully, closing resources properly, logging what happened, 
or maybe, I don't know, restarting the failed operation?

(Ideally your program shouldn't contain any bugs. But if the program is 
critical enough, you really don't want it to just shut down because 
something bad happened. You might want to have it reset itself and try 
again - assuming that this is likely to produce a different result of 
course.)

Amusing thing: Last time I checked, a GHC program exits when thread #0 
exits. And if (say) thread #13 throws an exception which isn't caught, 
then thread #13 just exits, and the rest of the system keeps running. 
Isn't that fun? :-)

-- 
http://blog.orphi.me.uk/
http://www.zazzle.com/MathematicalOrchid*


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.