例外処理の概要
Midoliy|F#プログラミング
例外処理の概要

例外処理の概要


 F#には、「.NET例外型」と「F#例外型」の2種類の例外が混在しています。この章では、.NET例外型ではなく、F#例外型を定義して利用する方法について紹介します。
// ------------------
// [ 構文 ]
// ------------------
exception exception-type of argument-type

 上記の構文で、[exception-type] には新しい作成したいF#例外型の名前を指定します。また、[argument-type] にはこの型の例外を発生させるときに指定できる引数の型を表しています。[argument-type] に複数の値を渡したい場合は、tuple型を利用して複数の値を指定することも可能です。
 一般的なF#例外は以下のように定義します。
expression MyError of string

 また、次のように raise関数 を使用して例外を発生させることができます。
raise (MyError "Error message")

 意味があるかは別にして、パイプラインを利用して下記のようにすることも可能です。
MyError "Error message" |> raise

 さらに、意味があるかは別にして、パイプラインを利用して下記のように記述しても問題ありません。
"Error message" |> MyError |> raise

 上記のように、状況に合わせてパイプラインを利用しつつ、例外を発生させることが可能です。
 一般的に、F#の例外処理は「try...with構文」を利用して、下記のように行います。