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.

Confira também