F#尝试未处理的异常

时间:2011-02-11 18:01:35

标签: f#

在下面的代码中,我想读取一个文件并返回所有行;如果有IO错误,我希望程序退出并将错误消息打印到控制台。但该程序仍然遇到未处理的异常。这是最好的做法是什么? (我想我不需要Some/None,因为无论如何我都希望程序退出。)谢谢。

let lines = 
    try 
      IO.File.ReadAllLines("test.txt")
    with
    | ex -> failwithf " %s" ex.Message

1 个答案:

答案 0 :(得分:4)

您可以进行类型测试模式匹配。

let lines = 
    try 
      IO.File.ReadAllLines("test.txt")
    with
    | :? System.IO.IOException as e ->
        printfn " %s" e.Message
        // This will terminate the program
        System.Environment.Exit e.HResult
        // We have to yield control or return a string array
        Array.empty
    | ex -> failwithf " %s" ex.Message