There is flexible exception handling in Haskell?