Dela via


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.

Se även