例外狀況類型
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
的新型別。