Ant*_*ton 7 haskell exception-handling
我试图通过动作捕捉异常([1,2] !! 3).我不能.
我在努力
let a = [1,2]
Run Code Online (Sandbox Code Playgroud)
handle (\(e :: SomeException) -> print "err" >> return 1) (return $ a !! 3)
Control.Exception.catch (return $ a !! 3) (\(e::SomeException) -> print "err" >> return 1)
我得到了 例外:序曲.(!!):索引太大*
可能吗?可能我会使用Maybe方法.
感谢帮助.
惰性和异常,如懒惰和平行,以微妙的方式相互作用!
将return
数组访问包装在thunk中,以便返回未评估的值,从而在处理程序之外评估异常.
解决方案是确保评估return
还必须评估列表索引.这可以通过以下方式完成$!
:
handle((e :: SomeException) - > print"err">> return 1)(返回$!a !! 3)