arr*_*owd 5 error-handling haskell
我一直在寻找这个问题的答案,并找到了这篇博文.它说它fail有优势,error因为它不受IOmonad的限制.
我应该使用fail而不是error全部代码吗?是否会fail引发Control.Exception.catch异常IO?
编辑:我发现上面的链接更新.
这是我的建议:
如果您IO已经使用了代码,请通过throwIOfrom 使用正确的异常Control.Exception.
如果您的代码已经使用了monad堆栈,如果它已经不支持monad堆栈,请添加错误,并使用它们.
如果您使用非monadic代码,请编写总函数.即,error如果可以的话,避免和不完整的模式.fail在这里使用只会强制你的代码不必要的monadic.如果需要特殊效果,请使用正确的数据类型(如Maybe或Either或自定义的数据类型).