Joh*_*ler 33 ruby syntax error-handling
在ruby中捕获错误,使用该rescue语句.通常这种说法发生在begin和之间end.也可以使用rescue语句作为block(do ... end)或方法(def ... end)的一部分.我的问题是什么其他结构(循环,而如果,......),如果有任何将拯救巢内?
klo*_*ner 44
您只能在两种情况下使用救援:
在一个begin ... end街区内
begin
raise
rescue
nil
end
Run Code Online (Sandbox Code Playgroud)作为语句修饰符
i = raise rescue nil
Run Code Online (Sandbox Code Playgroud)函数,模块和类体(感谢Jörg)是隐式begin...end块,因此您可以在没有显式begin/的任何函数内进行挽救end.
def foo
raise
rescue
nil
end
Run Code Online (Sandbox Code Playgroud)
块形式采用可选的参数列表,指定哪些异常(和后代)rescue:
begin
eval string
rescue SyntaxError, NameError => boom
print "String doesn't compile: " + boom
rescue StandardError => bang
print "Error running script: " + bang
end
Run Code Online (Sandbox Code Playgroud)
如果将内联作为语句修饰符调用,或者在begin/ endblock中没有参数,则rescue将捕获StandardError及其后代.
这是关于的1.9文档rescue.
pim*_*pin 11
正如最近的评论中所说,自 Ruby 2.5 以来,响应已经发生了变化。
do ... end块现在是隐式begin ... end块;如模块、类和方法体。
内联块{...}仍然不能。
| 归档时间: |
|
| 查看次数: |
20273 次 |
| 最近记录: |