begin
raise 'foo'
rescue
puts $!.inspect # => #<RuntimeError: foo>
ensure
puts $!.inspect # => nil
end
puts $!.inspect # => nil
Run Code Online (Sandbox Code Playgroud)
谷歌搜索,但没有找到一个明确的答案.
只是想确认它的生命周期(?)$!,它是否只在一个rescue块内保持价值?
$! 如果没有救援块,则在救援块中或在sure块中有错误:
begin
raise 'foo'
ensure
puts $!.inspect # => #<RuntimeError: foo>
end
Run Code Online (Sandbox Code Playgroud)
$!nil在其他任何地方都具有价值。