[ruby-core:77391] [Ruby trunk Bug#12588] When an exception is re-raised in the "rescue" clause, the back trace does not contain the line in that clause
From:
asari.ruby@...
Date:
2016-09-26 00:56:03 UTC
List:
ruby-core #77391
Issue #12588 has been updated by Hiro Asari.
The current stacktrace is misleading. Without line 4 in it, the implication is that the exception was found on line 2, and was not caught by `rescue`. In this simple case, the stack trace should contain lines `[4,7]`, not `[2,7]`.
I am not sure how I can use `Exception#cause`. I tried:
~~~
$ cat -n foo.rb
1 def foo
2 raise StandardError
3 rescue StandardError => e
4 puts e.cause.class
5 raise e.cause
6 end
7
8 foo
$ ruby -v foo.rb
ruby 2.4.0dev (2016-09-21 trunk 56200) [x86_64-darwin15]
NilClass
foo.rb:5:in `raise': exception object expected (TypeError)
from foo.rb:5:in `rescue in foo'
from foo.rb:2:in `foo'
from foo.rb:8:in `<main>'
~~~
----------------------------------------
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-60644
* 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>