• ベストアンサー

「finally節で戻り値を記述してはいけない」理由

一般的に「finally節で戻り値を記述してはいけない」と 言われているのはなぜでしょうか? 実際にfinally節に戻り値を記述したバグのあるソースを 提示していただければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

(0)try節でどんな例外を投げてももみ消されてしまうが、このような動作を期待していることは考えにくいため。 (1)try節でどんな値を返してもfinally節のreturnで返したほうの値が返ることになるが、このような動作の実現のためにfinally節が使われることは考えにくいため。 でしょうか。自分は普段「finally ブロックは正常に完了しません。」の警告はエラー扱いするよう設定していますが、特に不便を感じたことはありません。finally節でreturnするようなコードがあったら、それはもっとわかりやすく自然なコードに書きなおせるということでしょう。サンプルコードは参考URLに譲ります。

参考URL:
http://blogs.wankuma.com/nagise/archive/2007/08/07/89218.aspx

関連するQ&A