Partilhar via


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.

Consulte também