摘要异常检查

时间:2010-12-02 10:10:32

标签: ruby-on-rails ruby exception-handling refactoring

我有一系列使用相同异常处理的方法。

如何将异常检查抽象为单独的函数?

请参阅下面的示例,非常感谢您的帮助!

def a
  code
  begin
    rescue 1...
    rescue 2...
    rescue 3...
    rescue 4...
  end
end

def b
  code
  begin
    rescue 1...
    rescue 2...
    rescue 3...
    rescue 4...
  end
end

2 个答案:

答案 0 :(得分:10)

最简单的解决方案是将代码作为块传递给方法,并在开始/救援表达式中将其传递给它:

def run_code_and_handle_exceptions
  begin
    yield
  rescue 1...
  rescue 2...
  rescue 3...
  rescue 4...
  end
end

# Elsewhere...
def a
  run_code_and_handle_exceptions do
    code
  end
end
# etc...

您可能希望提供比run_code_and_handle_exceptions更简洁的方法名称!

答案 1 :(得分:1)

在控制器中我使用了rescue_from -functionality。这太干了:

class HelloWorldController < ApplicationController
  rescue_from ActiveRecord::RecordNotFound, :with => :handle_unfound_record

  def handle_unfound_record
    # Exception handling...
  end