Typy wyjątków

Istnieją dwie kategorie wyjątków w języku F#: typy wyjątków platformy .NET i typy wyjątków języka F#. W tym temacie opisano sposób definiowania i używania typów wyjątków języka F#.

Składnia

exception exception-type of argument-type

Uwagi

W poprzedniej składni typ wyjątku to nazwa nowego typu wyjątku języka F#, a typ argumentu reprezentuje typ argumentu, który można podać podczas zgłaszania wyjątku tego typu. Można określić wiele argumentów przy użyciu typu krotki dla typu argumentu.

Typowa definicja wyjątku języka F# przypomina następującą.

exception MyError of string

Wyjątek tego typu można wygenerować przy użyciu raise funkcji w następujący sposób.

raise (MyError("Error message"))

Możesz użyć typu wyjątku języka F# bezpośrednio w filtrach w wyrażeniu try...with , jak pokazano w poniższym przykładzie.

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

Typ wyjątku zdefiniowany za pomocą słowa kluczowego exception w języku F# to nowy typ, który dziedziczy z System.Exceptionklasy .

Zobacz też