【发布时间】:2016-09-17 01:25:01
【问题描述】:
我有一个程序可以生成 JSON 并将其打印到文件中。生成 JSON 的函数可能会在代码生成过程中失败。
在 JSON 生成失败的那一刻,到那时生成的代码仍然被写入文件,给我一个不完整/不正确的输出文件。
我试图弄清楚如何防止写入错误的输出。比如:
main = do
let
output = encodingfunction
print' (Just x) = writeFile "outputfile" output
print' _ = putStrLn "Encoding Failed Miserably"
print' ouput
return ()
encodingfunction :: Maybe String
【问题讨论】:
-
您需要
encodingFunction进行更改,返回Maybe String而不是返回可能在某些时候出现错误的String。 -
@amalloy 我已经对
encodingfunction进行了更改,但我仍然遇到同样的问题。我是否必须将程序中的每个函数都更改为Maybe类型? -
如所写,您的代码应该可以工作,尽管您应该在
writeFile调用中使用x而不是output。如果您仍然遇到问题,请提供[最小、完整且可验证的示例])stackoverflow.com/help/mcve),以便回答者可以看到问题所在。
标签: haskell error-handling io