Proposal: Extensible exceptions

David Menendez dave at
Sun Jul 6 19:24:19 EDT 2008

On Sun, Jul 6, 2008 at 6:05 PM, Henning Thielemann
<lemming at> wrote:
>> While dividing by zero or accessing an array out of bounds isn't the
>> same as a file not existing, I'm not sure we need different mechanisms
>> for dealing with them.
> Yes! Because there is no need to recover from an error. Instead an error
> must be fixed by the programmer. The program cannot do this by itself. I
> consider recovering from an error like in a web-server a hack, like catching
> and recovering from an 'error' in IO is a hack, just like unsafePerformIO. I
> accept that we need a hack in order to tell the user "please send a
> bug-report to XYZ", but a hack should be called a hack, not "proper
> exception handling".

I don't recall calling anything "proper exception handling". I said
that it's reasonable to report certain programming errors through the
exception handling mechanism because it allows a running program to
clean up before it terminates.

>> If your code divides by zero, you still want any "finally" or "bracket"
>> clauses to get called before the program terminates.
> A program which divides by zero is broken and must be fixed. A program which
> divides by zero but cleans up a bit, is still broken and must be fixed.
> Cleaning up may make things better, but may also make things worse! Handling
> errors is the task of Debugging, not that of Exception Handling. I suggest
> special variants of 'finally' and 'bracket' for bracketing bugs should be
> located below "Debug" in the module hierarchy.

Yes, a program that divides by zero should be fixed. If a program has,
say, locked a file and then encounters an error, are you suggesting
that the program should crash without unlocking the file? The fact
that the program shouldn't have encountered an error is irrelevant.

Dave Menendez <dave at>

More information about the Libraries mailing list