Issue #14684 has been updated by RubyBugs (A Nonymous).


nobu (Nobuyoshi Nakada) wrote:
> `$!` isn't accessible outside `rescue` clause, even without irb.

In IRB, should `$!` be set, or a proxy for it be set, when the IRB eval handles an exception?

----------------------------------------
Feature #14684: IRB swallows exceptions
https://bugs.ruby-lang.org/issues/14684#change-71482

* Author: RubyBugs (A Nonymous)
* Status: Assigned
* Priority: Normal
* Assignee: keiju (Keiju Ishitsuka)
* Target version: 
----------------------------------------
# Summary

IRB swallows exceptions, doesn't provide programatic access to raised exception in session.

## Details

On Ruby 2.3.4, we find it surprising that exceptions in IRB are swallowed, and are not accessible at the two locations we checked:

1. In the global variable for most recent exception `$!`
2. In the return value of evaluating the expression `_`

Consider this IRB session:

~~~ ruby
def method_which_raises
  1/0
end

method_which_raises

# ZeroDivisionError: divided by 0
#	from (irb):10:in `/'
#	from (irb):10:in `method_which_raises'
#	from (irb):13
#	from /Users/marcsiegel/.rubies/ruby-2.3.4/bin/irb:11:in `<main>'
~~~

### Observed

Neither `_` nor `$!` give access to the raised exception, so that during development or debugging, one could dig further into what had occurred.

### Expected

Either `_` or `$!` would give programmatic access in IRB to an exception




-- 
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>