什么是Rubyist方法来捕获救援区中引发的异常?

时间:2016-03-21 23:19:58

标签: ruby exception-handling

假设我有以下内容:

Dnis $dni

Rubyist找到第二个异常的方法是什么?最好将整个东西包裹在另一个开始救援区块中,还是有更优雅的解决方案?

1 个答案:

答案 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