Sdílet prostřednictvím


Typy výjimek

V jazyce F#existují dvě kategorie výjimek: typy výjimek .NET a typy výjimek jazyka F#. Toto téma popisuje, jak definovat a používat typy výjimek jazyka F#.

Syntaxe

exception exception-type of argument-type

Poznámky

V předchozí syntaxi je typ výjimky název nového typu výjimky jazyka F# a typ argumentu představuje typ argumentu, který lze zadat při vyvolání výjimky tohoto typu. Více argumentů můžete zadat pomocí typu řazené kolekce členů pro typ argumentu.

Typická definice výjimky jazyka F# se podobá následující.

exception MyError of string

Výjimku tohoto typu můžete vygenerovat pomocí raise funkce následujícím způsobem.

raise (MyError("Error message"))

Typ výjimky jazyka F# můžete použít přímo ve filtrech ve výrazu try...with , jak je znázorněno v následujícím příkladu.

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 výjimky, který definujete pomocí klíčového exception slova v jazyce F#, je nový typ, který dědí z System.Exception.

Viz také