Tipi di eccezione

Esistono due categorie di eccezioni in F#: tipi di eccezione .NET e tipi di eccezione F#. Questo argomento descrive come definire e usare tipi di eccezione F#.

Sintassi

exception exception-type of argument-type

Osservazioni:

Nella sintassi precedente, exception-type è il nome di un nuovo tipo di eccezione F# e il tipo di argomento rappresenta il tipo di un argomento che può essere fornito quando si genera un'eccezione di questo tipo. È possibile specificare più argomenti usando un tipo di tupla per il tipo di argomento.

Una definizione tipica per un'eccezione F# è simile alla seguente.

exception MyError of string

È possibile generare un'eccezione di questo tipo usando la raise funzione , come indicato di seguito.

raise (MyError("Error message"))

È possibile usare un tipo di eccezione F# direttamente nei filtri in un'espressione try...with , come illustrato nell'esempio seguente.

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

Il tipo di eccezione definito con la exception parola chiave in F# è un nuovo tipo che eredita da System.Exception.

Vedi anche