Haskell:中止写入文件错误

问题描述:

我有一个程序生成JSON并将其打印到文件。生成JSON的函数在代码生成过程中可能会失败。Haskell:中止写入文件错误

在JSON生成失败的时刻,到此为止生成的代码仍然被写入文件,给我一个不完整/不正确的输出文件。

我想弄清楚如何防止写入错误的输出。喜欢的东西:

main = do 
    let 
    output   = encodingfunction 
    print' (Just x) = writeFile "outputfile" output 
    print' _  = putStrLn "Encoding Failed Miserably" 
    print' ouput 
    return() 

encodingfunction :: Maybe String 
+0

您需要'encodingFunction'来更改,返回'Maybe String'而不是返回可能在某处出现错误的'String'。 – amalloy

+0

@amalloy我对“编码功能”进行了修改,但仍然存在相同的问题。我是否必须将程序中的每个函数都更改为'Maybe'类型? – matthias

+0

正如你所写的,你的代码应该可以工作,尽管你应该在'writeFile'调用中使用'x'而不是'output'。如果你仍然有问题,请制作一个[最小,完整和可验证的例子])http://stackoverflow.com/help/mcve),这样回答者可以看到错误。 – amalloy

你可能想强制返回的字符串的评估,以便编码功能是肯定做了你开始写入文件之前。 Mabye在打印之前可以检查它的长度。