我知道全局变量$!
拥有最新的异常对象,但是我对下面的语法感到困惑。谁能帮助我理解以下语法?
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 $!
您要么得到这些行,要么得到错误(如果文件不存在,您没有权限等)。无论如何,执行不会停止。
关于ruby - `rescue $!`如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14787300/