F # попробуй с необработанными исключениями - PullRequest
3 голосов
/ 11 февраля 2011

В следующем коде я хочу прочитать файл и вернуть все строки;если есть ошибка ввода-вывода, я хочу выйти из программы с выводом сообщения об ошибке на консоль.Но программа по-прежнему сталкивается с необработанным исключением.Какова лучшая практика для этого?(Я думаю, мне не нужно Some/None, так как я все равно хочу выйти из программы при ошибке.) Спасибо.

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

1 Ответ

4 голосов
/ 11 февраля 2011

Можно выполнить сопоставление тестового шаблона типа.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...