Ausnahmetypen
Es gibt zwei Kategorien von Ausnahmen in F#: .NET-Ausnahmetypen und F#-Ausnahmetypen. In diesem Thema wird beschrieben, wie F#-Ausnahmetypen definiert und verwendet werden.
Syntax
exception exception-type of argument-type
Bemerkungen
In der obigen Syntax ist exception-type der Name eines neuen F#-Ausnahmetyps, und argument-type stellt den Typ eines Arguments dar, das bei Auslösen einer Ausnahme dieses Typs angegeben werden kann. Sie können mehrere Argumente angeben, indem Sie für argument-type einen Tupeltyp verwenden.
Eine typische Definition für eine F#-Ausnahme sieht in etwa folgendermaßen aus.
exception MyError of string
Sie können eine Ausnahme dieses Typs mit der raise
-Funktion wie folgt generieren.
raise (MyError("Error message"))
Sie können einen F#-Ausnahmetyp direkt in den Filtern in einem try...with
-Ausdruck verwenden, wie im folgenden Beispiel gezeigt.
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
Der Ausnahmetyp, den Sie mit dem exception
-Schlüsselwort in F# definieren, ist ein neuer Typ, der von System.Exception
erbt.