如何在Haskell中捕获读错误

时间:2015-07-11 10:36:45

标签: haskell

我遇到以下问题,我正在解析文件,使用readInt转换为String。问题是当它失败时,我无法显示无法解析的字符串。我得到Exception: Prelude.read : no parse

我尝试编写自己的myRead函数,该函数将使用read并抛出更有意义的消息,但我不知道如何捕获read引发的错误。

或者,有没有其他方法可以找到未正确读取的内容(使用调试器或跟踪?)

1 个答案:

答案 0 :(得分:7)

case reads yourString of
  [(x,"")] -> correctlyParsed x
  _        -> errorHandling

否则,您可以使用readMaybe :: Read a => String -> Maybe a,如下所示

import Text.Read

case readMaybe yourString of
  Just x  -> correctlyParsed x
  Nothing -> errorHandling