抓住错误抛出“错误”?

时间:2012-06-07 06:41:30

标签: haskell exception-handling either

有一些stdlib函数会在无效输入上抛出错误。例如:

Prelude> read "1o2" :: Int
*** Exception: Prelude.read: no parse

我想将其换行以返回Either e a。我怎么能这样做?

2 个答案:

答案 0 :(得分:14)

There is no spoon.你没有听到我的声音。

但是,对于此特定示例,您应该使用reads代替。

答案 1 :(得分:2)

我更喜欢将错误转换为值:

 maybeRead :: Read a => String -> Maybe a
 maybeRead s = case reads s of
      [(x, "")] -> Just x
      _         -> Nothing