Предупреждение компилятора F # FS0067 для исключений, когда охранники - PullRequest
0 голосов
/ 12 сентября 2018

В F # мы можем удобно использовать failwith и failwithf, которые оба генерируют исключения.Следовательно, вам иногда может понадобиться использовать «когда охранник», чтобы различать различные условия исключения.

Вот иллюстративный пример:

    try
        let isWednesday = DateTime.Now.DayOfWeek = DayOfWeek.Wednesday
        if isWednesday then failwith "Do not run this on Wednesdays!"
    with
    | :? DivideByZeroException -> printfn "You divided by zero."
    | :? Exception as ex when ex.Message.Contains("Wednesdays") -> printfn "I said, %s" ex.Message
    | ex -> printfn "%s" ex.Message

Однако приведенный выше код приводит к двумпредупреждения:

Program.fs(14,7): warning FS0067: This type test or downcast will always hold 
Program.fs(14,7): warning FS0067: This type test or downcast will always hold 

Как мне избежать этого предупреждения?

1 Ответ

0 голосов
/ 12 сентября 2018

Удалите шаблон проверки типа для класса Exception.Это не нужно.

with
| :? DivideByZeroException -> printfn "You divided by zero."
| ex when ex.Message.Contains("Wednesdays") -> printfn "I said, %s" ex.Message
| ex -> printfn "%s" ex.Message
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...