在ruby中,使用rescue
语句捕捉错误.一般来说,这种说法出现在begin
和end
之间.还可以使用rescue
语句作为块(do ... end
)或方法(def ... end
)的一部分.我的问题是其他什么 struct (循环、while、if…)如果有的话,你会在里面营救鸟巢吗?
在ruby中,使用rescue
语句捕捉错误.一般来说,这种说法出现在begin
和end
之间.还可以使用rescue
语句作为块(do ... end
)或方法(def ... end
)的一部分.我的问题是其他什么 struct (循环、while、if…)如果有的话,你会在里面营救鸟巢吗?
您只能在两种情况下使用rescue:
begin ... end
个街区以内
begin
raise
rescue
nil
end
作为语句修饰符
i = raise rescue nil
函数、模块和类主体(感谢Jörg)是隐式的begin...end
个块,因此您可以在任何函数中进行解救,而无需显式的begin
/end
.
def foo
raise
rescue
nil
end
块形式采用可选的参数列表,指定哪些异常(和子体)为rescue
:
begin
eval string
rescue SyntaxError, NameError => boom
print "String doesn't compile: " + boom
rescue StandardError => bang
print "Error running script: " + bang
end
如果作为语句修饰符内联调用,或者在begin
/end
块中没有参数,rescue将捕获StandardError
and its descendants.