异常类型 (F#)

F# 中有两种类别的异常:.NET 异常类型和 F# 异常类型。 本主题介绍如何定义和使用 F# 异常类型。

exception exception-type of argument-type

备注

在前面的语法中,exception-type 是新 F# 异常类型的名称,argument-type 表示可在引发此类型异常时提供的参数的类型。 可通过为 argument-type 使用元组类型来指定多个参数。

典型的 F# 异常定义如下所示。

exception MyError of string

可通过使用 raise 函数生成此类型的异常,如下所示。

raise (MyError("Error message"))

您可以在 try...with 表达式的筛选器中直接使用 F# 异常类型,如下面的示例所示。

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

使用 F# 中的 exception 关键字定义的异常类型是一种新类型,该类型继承自 Exception

请参见

参考

异常:raise 函数 (F#)

概念

异常层次结构

其他资源

异常处理 (F#)