我知道全局变量$!
包含最新的异常对象,但我对下面的语法感到困惑。任何人都可以帮我理解以下语法吗?
rescue $!
答案 0 :(得分:9)
此构造可防止异常停止程序并使堆栈跟踪冒泡。它还将该异常作为值返回,这可能很有用。
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 $!
您要么获取行或错误(如果文件不存在,您没有权限等)。无论如何,执行不会停止。