共用方式為


例外狀況類型 (F#)

F# 的例外狀況分成兩類:.NET 例外狀況型別和 F# 例外狀況型別。 本主題描述如何定義及使用 F# 例外狀況型別。

exception exception-type of argument-type

備註

在前述語法中,exception-type 是新 F# 例外狀況型別的名稱,argument-type 表示可在引發此型別之例外狀況時可提供引數的型別。 您可以為 argument-type 使用 Tuple 型別來指定多個引數。

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#)