把我的代码看作
begin
aa = 20
bb = 0
puts 'before exception'
c = aa / bb
puts 'after exception'
rescue
puts 'in rescue'
end
它给出的输出为
before exception
in rescue
如果我想打印'后异常'以及。我需要怎么做呢?
我需要在异常引发后继续下一条语句。请帮助我。
编辑:我刚刚提到了上面的一个示例代码。考虑一下,我可能不知道哪里会发生什么异常,它可能会出现在脚本的任何地方,在执行完rescue之后,我需要回到开始中的下一行并处理它。在ruby中有什么方法可以处理这个问题吗?
3条答案
按热度按时间8e2ybdfx1#
你不能进入开始块。但是如果任何代码需要在异常后运行,请使用
ensure
块。zzoitvuj2#
下面是解决这种自定义异常情况的方法,或者您需要将代码块划分为多个部分,并为您觉得可能引发异常的代码块创建一个开始结束代码块。
希望这能有所帮助。来源:http://avdi.org/talks/rockymtnruby-2011/things-you-didnt-know-about-exceptions.html
htzpubme3#
这是一个非常好的问题,Ruby真的应该提供一种方法来忽略异常并继续到 * rescue块中的下一行 *。
看来唯一的选择是使用内联救援,这是不赞成作为一个不好的风格。