假设我有以下内容:
Dnis $dni
Rubyist找到第二个异常的方法是什么?最好将整个东西包裹在另一个开始救援区块中,还是有更优雅的解决方案?
答案 0 :(得分:4)
我不能说 Rubyist方式,但这里是 Rubyist的方式:
尽可能使救援代码成为错误证明。如果不可能使异常变得非常罕见,那么不是在救援块内部开始救援块的嵌套,而是调用处理其自身异常的另一种方法,例如:
def foo
1/0
rescue
complicated_foo_error_handler
end
private
def complicated_foo_error_handler
# handle foo errors
rescue
complicated_complicated_foo_error_handler_error_handler
end
def complicated_complicated_foo_error_handler_error_handler
# handle complicated_foo_error_handler errors
rescue
STDERR.puts 'I give up!'
exit false
end