特殊変数$!
るりまサーチによると最後に発生した例外が$!に入るそうです。
#!/usr/local/bin/ruby puts "$! = #{$!}(#{$!.class})"#=>"$! = (NilClass)" begin raise "test" rescue puts "$! = #{$!}(#{$!.class})"#=>"$! = test(RuntimeError)" end puts "$! = #{$!}(#{$!.class})"#=>"$! = (NilClass)"
でも試してみたら、入ったままになるわけではないようです。nilに戻ったように見えます。このあたり理解できてません。