Issue #12588 has been updated by Shyouhei Urabe.


Hiro Asari wrote:
> I am not sure how I can use `Exception#cause`. 

Exception#cause makes sense when you raise another exception from inside of a rescue clause.  Take a look at this example:

```ruby
def foo
  raise 'raised in #foo'
end

def bar
  foo
rescue
  raise 'raised in #bar'
end

def baz
  bar
rescue => e
  p e        # => #<RuntimeError: raised in #bar>
  p e.cause  # => #<RuntimeError: raised in #foo>
end

baz
```

----------------------------------------
Bug #12588: When an exception is re-raised in the "rescue" clause, the back trace does not contain the line in that clause
https://bugs.ruby-lang.org/issues/12588#change-60678

* Author: Hiro Asari
* Status: Rejected
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-darwin14]
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
Given:

~~~
$ cat -n foo.rb 
     1  def foo
     2    raise StandardError
     3  rescue StandardError => e
     4    raise e
     5  end
     6
     7  foo
~~~

one would reasonably expect to see line 4 to be in the back trace when this file is executed, but one does not.

~~~
$ ruby -v foo.rb
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-darwin14]
foo.rb:2:in `foo': StandardError (StandardError)
        from foo.rb:7:in `<main>'
~~~




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>