Типы исключения
Существует две категории исключений в F#: типы исключений .NET и типы исключений F#. В этом разделе описывается определение и использование типов исключений F#.
Синтаксис
exception exception-type of argument-type
Замечания
В предыдущем синтаксисе тип исключения — это имя нового типа исключения F#, а тип аргумента представляет тип аргумента, который можно указать при возникновении исключения этого типа. Можно указать несколько аргументов с помощью типа кортежа для типа аргумента.
Обычное определение исключения F# напоминает следующее.
exception MyError of string
Вы можете создать исключение этого типа с помощью raise
функции, как показано ниже.
raise (MyError("Error message"))
Тип исключения F# можно использовать непосредственно в фильтрах в try...with
выражении, как показано в следующем примере.
exception Error1 of string
// Using a tuple type as the argument type.
exception Error2 of string * int
let function1 x y =
try
if x = y then raise (Error1("x"))
else raise (Error2("x", 10))
with
| Error1(str) -> printfn "Error1 %s" str
| Error2(str, i) -> printfn "Error2 %s %d" str i
function1 10 10
function1 9 2
Тип исключения, который определяется с помощью exception
ключевое слово в F#, — это новый тип, наследующий от System.Exception
.