Issue #14684 has been updated by nobu (Nobuyoshi Nakada).


`$!` isn't accessible outside `rescue` clause, even without irb.

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

* Author: RubyBugs (A Nonymous)
* Status: Assigned
* Priority: Normal
* Assignee: keiju (Keiju Ishitsuka)
* Target version: 
* ruby -v: ruby 2.3.4p301 (2017-03-30 revision 58214) [x86_64-darwin15]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
# 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>