例外の種類 (F#)
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 キーワードを使用して定義する例外の種類は、Exception を継承する新しい型です。