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
Comentários
Na sintaxe anterior, tipo de exceção é o nome de um novo tipo de exceção F# e tipo de argumento representa o tipo de um 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 tipo de argumento.
Uma definição típica para uma exceção F# se assemelha ao seguinte.
exception MyError of string
Você pode gerar uma exceção desse tipo usando a função raise
, da seguinte maneira.
raise (MyError("Error message"))
Você pode usar um tipo de exceção F# diretamente nos filtros em uma expressão try...with
, 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 palavra-chave exception
em F# é um novo tipo herdado de System.Exception
.