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.Exception
klasy .