Поделиться через


Типы исключений (F#)

В языке F# существует две категории исключений: типы исключений .NET и типы исключений F#. В этом разделе описывается определение и использование типов исключений F#.

exception exception-type of argument-type

Заметки

В приведенной выше синтаксической конструкции exception-type — это имя нового типа исключения F#, а argument-type представляет собой тип аргумента, который может быть передан при создании исключения данного типа. Можно задавать несколько аргументов, используя в качестве argument-type кортежный тип.

Типичное определение исключения 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#, является новым типом, наследуемым от класса Exception.

См. также

Ссылки

Исключения: функция raise (F#)

Основные понятия

Иерархия исключений

Другие ресурсы

Обработка исключений (F#)