[MacRuby-devel] [MacRuby] #403: rescue block executed if exception raised in previous iteration
MacRuby
ruby-noreply at macosforge.org
Sun Oct 25 03:24:16 PDT 2009
#403: rescue block executed if exception raised in previous iteration
-------------------------------+--------------------------------------------
Reporter: pwilson@… | Owner: lsansonetti@…
Type: defect | Status: new
Priority: major | Milestone: MacRuby 0.5
Component: MacRuby | Keywords:
-------------------------------+--------------------------------------------
If a begin/rescue block is inside an iterator and the block raises an
exception on the first iteration but calls return on the second iteration,
the return is ignored and the rescue block ran a second time. Here is an
example:
{{{
def main
[1,2].each do |iter|
puts "Starting iteration #{iter}"
begin
if iter == 1
raise StandardError
end
puts " Successful iteration #{iter}"
return true
rescue StandardError
puts " Failed iteration #{iter}"
next
end
end
return false
end
puts main
}}}
In Ruby 1.8.7, the main method returns true, but in the Oct 24 nightly
build of MacRuby, it returns false with this output:
{{{
Starting iteration 1
Failed iteration 1
Starting iteration 2
Successful iteration 2
Failed iteration 2
false
}}}
Note that on the second iteration, both the Successful and Failed log
messages get printed.
--
Ticket URL: <http://www.macruby.org/trac/ticket/403>
MacRuby <http://macruby.org/>
More information about the MacRuby-devel
mailing list