クイズ

以下のメソッドが true を返しました。なぜ?

def hoge
  @objects.inject([]) do |result, obj|
    begin
      result << obj.do_something
    rescue Exception => e
      handle_exception e
    ensure
      result
    end
  end || []
end

解答

プログラミング言語 Ruby リファレンスマニュアル

begin式全体の評価値は、本体/rescue節/else節のうち最後に評価された文の値です。また各節において文が存在しなかったときの値はnilです。いずれにしてもensure節の値は無視されます

ensure無視って...。