例外の種類

F# には、.NET の例外の種類と F# の例外の種類という 2 つの例外のカテゴリがあります。 このトピックでは、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 から継承される新しい種類です。

関連項目