我有一系列使用相同异常处理的方法。
如何将异常检查抽象为单独的函数?
请参阅下面的示例,非常感谢您的帮助!
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
答案 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