[Haskell-cafe] exceptions vs. Either
Bjoern Knafla
mailinglists at bjoernknafla.de
Tue Aug 3 07:05:13 EDT 2004
Hi - I am just learning Haskell and am far away from exception handling
intricacies. However I just recently read an article of Herb Sutter
about exception handling in C++ with some rules when to use exception
handling - and perhaps these rules might be applicable to Haskell too
(article: "When and How to Use Exceptions", Herb Sutter, C/C++ Users
Journal August 2004, pp. 47 -- 51)?
Herb Sutter gave these rules :
An error is any failure that prevents a function from succeeding. Three
main kind of errors:
- a condition that prevents the function from meeting a precondition of
another function that must be called (so to say: the caller has to
check for preconditions while the function called my use C/C++ asserts
to assert the correctness of its preconditions)
- a condition that prevents a function from establishing one of its own
postconditions (e.g. producing a (valid) return value)
- a condition that prevents the function from reestablishing an
invariant that it is responsible to maintain (special kind of
postcondition mainly found in object oriented code).
Any other condition is not an error and shouldn't be reported as one.
The code that could cause an error is responsible for detecting and
reporting the error otherwise this is a programming mistake.
I am not sure if these rules apply to real functional programming but
at least they seem to be useable. The point that the caller is
responsible for checking the preconditions of functions it is calling
is something I also found as a suggestion in using the object oriented
language Eiffel.
Cheers and best regards
Bjoern
More information about the Haskell-Cafe
mailing list