我知道全局变量$!
包含最新的异常对象,但我对下面的语法感到困惑。谁能帮我理解以下语法?
rescue $!
此构造可防止异常停止您的程序并冒泡堆栈跟踪。它还会将该异常作为值返回,这很有用。
a = get_me_data rescue $!
在此行之后,a
将保存请求的数据或异常。然后,您可以分析该异常并采取相应措施。
def get_me_data
raise 'No data for you'
end
a = get_me_data rescue $!
puts "Execution carries on"
p a
# >> Execution carries on
# >> #<RuntimeError: No data for you>
lines = File.readlines(filename) rescue $!
你要么得到这些行,要么得到错误(如果文件不存在,你没有权限等)。在任何情况下,执行都不会停止。