try...finally式の概要
このトピックでは、F#で使用される例外処理のための式であるtry...finally式を紹介します。
try...finally式を使用すると、try句内で例外が発生した場合でもクリーンアップコードを実行することが可能です。
// ------------------
// [ 構文 ]
// ------------------
try
trying-expressions
finally
clean-up-expressions
finally句に記述した処理は、try句が終了した後に必ず実行されます。「正常終了した」のか、「例外が発生した」のかは関係ありません。そのため、リソースの解放処理やクローズ処理などを記述するために使われることが多いです。また、finally句の戻り値は、式全体の戻り値に影響を与えません。例外が発生しないときに返される型は【trying-expressions】の値となります。もし、try句内で例外をキャッチしたい場合は、try...with式を入れ子にして記述します。try...with式を記述せずに例外が発生した場合は、finally句の処理が完了したあとに、例外が呼び出し元へと伝播していきます。
サンプルでみるtry...finally式
以下はtry...finally式の簡単な利用方法を示しています。
また、try...finally式の中に入れ子でtry...with式を記述することで例外ハンドリングをすることができます。この場合、finally句内のコードは、try句・with句のどちらかが完了したあとに必ず実行しなければならない(または実行したい)共通の処理が記述されます。