异常类型
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
关键字定义的异常类型是从 System.Exception
继承的新类型。