我遇到以下问题,我正在解析文件,使用read
将Int
转换为String
。问题是当它失败时,我无法显示无法解析的字符串。我得到Exception: Prelude.read : no parse
。
我尝试编写自己的myRead
函数,该函数将使用read
并抛出更有意义的消息,但我不知道如何捕获read
引发的错误。
或者,有没有其他方法可以找到未正确读取的内容(使用调试器或跟踪?)
答案 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