On Tue, 8 Dec 2009, Ben Franksen wrote:

Michael, Henning

There are two meanings to the word 'exception' in this context; both of you
tend to conflate these different meanings. One meaning is about a
*mechanism* for non-local control flow; the other is about certain classes
of un-desired program conditions.

Michael, you are above arguing that it is ok to use the same /mechanism/ to
signal errors and exceptions. That is ok with me.

I'm actually arguing that errors and exceptions (or failures) should not be treated the same way. This is my opinion because

1. You cannot catch all kinds of errors (infinite loops, memory corruption, and so on) at run-time 2. The program cannot help itself if it is buggy. The next higher level in the software hierarchy certainly can, but this requires obviously a different mechanism.

The correct treatment of those things is in my opion:

1. Errors must be fixed by the programmer
2. Exceptions must be appreciated by the programmer and handled by the program 
at runtime

So, maybe it would help if we could agree to use different terms for those
two meanings of the word 'exception'. I think 'exception' is too strongly
associated with the non-local control flow mechanism to introduce a new
word for it.

I used the term "exception" because this is the term used for the concept of handling "file not found", "could not allocate resource" in the introduction to modern languages that I have read. Thus my impression was that "exception" is the term for the concept, whereas there are different implementations and ways of handling them. For instance in Modula-3 the EXIT statement is called an exception that escapes the LOOP structure, but it cannot be catched with TRY, that is used for user defined exceptions.

 http://www.cs.purdue.edu/homes/hosking/m3/reference/exit.html

In Modula-3 a detected error (range violation, NIL dereference, division by zero) terminates the program. An undetected error (which is restricted to UNSAFE modules) can cause memory corruption and all those bad things, and cannot be handled in any way. Before exceptions got a special handling in programming language, they still existed. In C for instance they were expressed by return codes.

The Wikipedia author also seem to consider "exception" to be the term for the concept, not for the implementation:

http://en.wikipedia.org/wiki/Exception_handling

"Exception handling is a programming language construct or computer hardware mechanism designed to handle the occurrence of exceptions, special conditions that change the normal flow of program execution."
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to