Skip to content

Inconsistency between MRI and JRuby with begin/rescue/else #733

@maxsz

Description

@maxsz

Consider the following simple program:

def test?
    puts "test?"
rescue
    return true
else
    return false
end

def test_begin?
    begin
        puts "test_begin?"
    rescue
        return true
    else
        return false
    end
end

puts "failure" if test?
puts "failure" if test_begin?

Expected Output:

test?
test_begin?

Actual Output:

test?

This works on MRI, as expected:

$ rvm use jruby
Using /Users/szengel/.rvm/gems/jruby-1.7.3
$ ruby --version
jruby 1.7.3 (1.9.3p385) 2013-02-21 dac429b on Java HotSpot(TM) 64-Bit Server VM 1.6.0_45-b06-451-11M4406 [darwin-x86_64]
$ ruby test.rb
test?
$ rvm use 1.9.3
Using /Users/szengel/.rvm/gems/ruby-1.9.3-p392
$ ruby --version
ruby 1.9.3p385 (2013-02-06 revision 39114) [x86_64-darwin12.3.0]
$ ruby test.rb  
test?
test_begin?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions