2012/01/07

ensure節は伝播する例外や戻り値を変える


プログラミング言語 Rubyより

ensure節は、他の制御移転処理を実行して例外が伝播するのをキャンセルすることができる。ensure節が新しい例外を生成すると、元の例外の代わりに新しい例外が伝播する。ensure節にreturn文が含まれていれば、例外の伝播はそこで止まり、ensure節を含むメソッドは呼び出し元に戻る。

プログラミング言語 Ruby 第2版 169ページ ensure節

begin
  return 1 # 呼び出し元に戻る前にensure節にジャンプする
ensure
  return 2 # 戻り値をこの新しい値に置き換える
end
うわー、気をつけないとトラブルなりそう...。