> From: John Goerzen [mailto:[EMAIL PROTECTED] > > My other choice is to use Dynamic for my > exceptions, but that makes it even more > difficult to catch and handle
Here's how I create "custom" exceptions; it doesn't seem onerous to me, but then I have a high tolerance for some kinds of coding pain: > data SqliteException = SqliteException Int String > deriving (Typeable) > catchSqlite :: IO a -> (SqliteException -> IO a) -> IO a > catchSqlite = catchDyn > throwSqlite :: SqliteException -> a > throwSqlite = throwDyn > Python can work that way, but also adds another feature: > > try: > blah > moreblah > finally: > foo And in Haskell we have catch(Dyn), bracket, and finally. Are these not enough? > Haskell's exception catching doesn't really have less > functionality than OCaml (some might argue it has more), > but it takes a lot more effort to compose, needing > to provide a function that returns a function in many cases. Does it? I'm not convinced... I think it's no more verbose than any other exception-handling mechanism, but maybe there's some cognitive overhead in translating an OO exception-handling idiom into Haskell. All I've ever used is catch and bracket, and I find them fairly straightforward. Could you post some code which you think would be clearer with an Ocaml or Python exception handling style? > The other annoying thing is forcing it to run in the IO monad. Note that you can throw exceptions from anywhere. They just have to be *caught* in the IO monad. Alistair. ----------------------------------------- ***************************************************************** Confidentiality Note: The information contained in this message, and any attachments, may contain confidential and/or privileged material. It is intended solely for the person(s) or entity to which it is addressed. Any review, retransmission, dissemination, or taking of any action in reliance upon this information by persons or entities other than the intended recipient(s) is prohibited. If you received this in error, please contact the sender and delete the material from any computer. ***************************************************************** _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell