开发者

Abstracting exception checking

开发者 https://www.devze.com 2023-01-29 00:05 出处:网络
I have a range of methods that use the same exception handling. How can I abstract out the exception checking into a separate function?

I have a range of methods that use the same exception handling.

How can I abstract out the exception checking into a separate function?

See example below, thanks a lot for your help folks!

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

def b
  code
  begin
    rescue 1...
    resc开发者_JAVA百科ue 2...
    rescue 3...
    rescue 4...
  end
end


The simplest solution would be to pass your code to a method as a block and yield to it within a begin/rescue expression:

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...

You may want to come up with a more succinct method name than run_code_and_handle_exceptions!


In controllers I've used rescue_from -functionality. It's quite DRY:

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

  def handle_unfound_record
    # Exception handling...
  end
0

精彩评论

暂无评论...
验证码 换一张
取 消