Tipos de exceção
Há duas categorias de exceções em F#: tipos de exceção .NET e tipos de exceção F#. Este tópico descreve como definir e usar tipos de exceção F#.
Sintaxe
exception exception-type of argument-type
Observações
Na sintaxe anterior, exception-type é o nome de um novo tipo de exceção F# e argument-type representa o tipo de argumento que pode ser fornecido quando você gera uma exceção desse tipo. Você pode especificar vários argumentos usando um tipo de tupla para argument-type.
Uma definição típica para uma exceção F# é semelhante à seguinte.
exception MyError of string
Você pode gerar uma exceção desse tipo usando a raise
função, da seguinte maneira.
raise (MyError("Error message"))
Você pode usar um tipo de exceção F# diretamente nos filtros de uma try...with
expressão, conforme mostrado no exemplo a seguir.
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
O tipo de exceção que você define com a exception
palavra-chave em F# é um novo tipo que herda de System.Exception
.