我必须对一些格式非常糟糕的 CSV 文件进行一些操作(一个文件中有多个不同的表等)。
为此,我使用 CsvFile.Load 并在字符串的 Seq 上写入函数。
但是,为了管理可能出现的异常,我编写了这样一个函数。
let tryWithResult f i =
try
f i |> Result.Ok
with
| e -> ("Exception Raised: " + e.Message + "\n" + e.Source) |> Result.Error
签名:
val tryWithResult : f:('a -> 'b) -> i:'a -> Result<'b,string>
就 F#/FP 良好实践而言,您认为这是正确的方法吗(因此我可以在面向铁路的编程 https://fsharpforfunandprofit.com/posts/recipe-part2/ 中使用它)?
我知道避免异常处理总是更好,但我想要一些相当“安全”的东西,但又不想花几个小时在上面。
谢谢
最佳答案
是的,捕获所有异常并将它们放入 Result
中是完全合理的,特别是如果您正在执行一个独立的解决方案。
如果 1) 您正在设计一个供其他人使用的库,或者 2) 您的代码是一个更大的框架的一部分,该框架已经很好地处理了未处理的异常并适本地记录了错误,那么放弃异常是有意义的。
关于f# - 使用 F# 中的结果管理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54085600/