Compartir a través de


Tipos de excepción

Hay dos categorías de excepciones en F#: tipos de excepción de .NET y tipos de excepción de F#. En este tema se describe cómo definir y usar tipos de excepción de F#.

Sintaxis

exception exception-type of argument-type

Comentarios

En la sintaxis anterior, exception-type (tipo de excepción) es el nombre de un nuevo tipo de excepción de F# y argument-type (tipo de argumento) representa el tipo de un argumento que se puede proporcionar al generar una excepción de este tipo. Puede especificar varios argumentos mediante un tipo de tupla para argument-type.

Una definición típica de una excepción de F# es similar a la siguiente.

exception MyError of string

Puede generar una excepción de este tipo mediante la función raise, como se indica a continuación.

raise (MyError("Error message"))

Puede usar un tipo de excepción F# directamente en los filtros de una expresión try...with, como se muestra en el ejemplo siguiente.

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

El tipo de excepción que defina con la palabra clave exception en F# es un nuevo tipo que hereda de System.Exception.

Consulte también