我知道,无论是否引发异常,都可以确保确保运行,但是有没有办法仅在调用营救后运行代码块?我问是因为如果有多个救援块以程序退出(或执行相同的操作)而结束,那么在每个救援块的末尾有没有更有效的方法来调用abort或exit?
最佳答案
如何使用另一个begin/rescue/ensure/end块在rescue
下重新引发异常?
def foo(error_class)
raise error_class, "raising an error..."
rescue Exception => e
begin
raise e
rescue ArgumentError
puts 'check your arguments please'
rescue LocalJumpError
puts "something's wrong with your block"
ensure
puts 'done handling the exception!'
end
end
内部代码块中的
ensure
仅在发生异常后命中。