Undantagstyper
Det finns två kategorier av undantag i F#: .NET-undantagstyper och F#-undantagstyper. I det här avsnittet beskrivs hur du definierar och använder F#-undantagstyper.
Syntax
exception exception-type of argument-type
Kommentarer
I den tidigare syntaxen är undantagstypen namnet på en ny F#-undantagstyp och argumenttypen representerar den typ av argument som kan anges när du skapar ett undantag av den här typen. Du kan ange flera argument med hjälp av en tuppelns typ för argumenttyp.
En typisk definition för ett F#-undantag liknar följande.
exception MyError of string
Du kan generera ett undantag av den här typen med hjälp raise
av funktionen enligt följande.
raise (MyError("Error message"))
Du kan använda en F#-undantagstyp direkt i filtren i ett try...with
uttryck, som du ser i följande exempel.
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
Undantagstypen som du definierar med nyckelordet exception
i F# är en ny typ som ärver från System.Exception
.