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
.