凄く基本的な事だけど、try〜catch〜finallyを使うときに、catch句でreturnしてやるとfinallyの中身は実行されるのか悩んで検索してしまったので備忘のために書いておきます。
結論から言うと、catch句の中にreturnがあってもfinallyは必ず実行される。
[csharp]
try
{
throw new Exception();
return true;
}
catch(Exception ex)
{
return false;
}
finally
{
Console.WriteLine("テストです。");
}
[/csharp]
上記のようなコードの場合、例外をキャッチして、return false;を行う前に、finally句の「テストです」の出力が行われる。まあ当然と言えば当然か。
ということで、確保したメモリもfinally内で解放してあげる事で大丈夫そうかな。finally句でreturnしてしまうといろいろと面倒そうなのでやらない方がいいっぽい?その辺は未検証です。時間が出来たら色々と検証してみたい。