Rails rescue_from停止执行流程

时间:2015-03-04 13:44:12

标签: ruby-on-rails ruby ruby-on-rails-4 ruby-on-rails-4.2

我在使用rescue_from

时遇到了问题
class SimpleError < StandardError; end

before_action :raise_exception
rescue_from SimpleError, with: :rescue_exception    

def raise_exception
    raise SimpleError
end

def rescue_exception
    log $!
end

def index
    @unreachable_code = true
def

在此代码中,您可以看到我只是在操作开始之前引发异常,这是由rescue_exception方法捕获的。问题是,在我捕获异常后,应用程序流停止并且永远不会到达操作代码。 在拯救例外后是否可以继续执行?

1 个答案:

答案 0 :(得分:5)

简短的回答,没有。 rescue_from旨在处理原本未被捕获的异常。

如果您想捕获控制器中每个操作的特定异常,我建议使用around_action

class MyController < ApplicationController
  class SimpleError < StandardError; end

  around_action :handle_simple_errors

  def index
    # code that might raise SimpleError
    @unreachable_code = true
  def

  private

  def handle_simple_errors
    begin
      yield
    rescue SimpleError
      # handle SimpleError however
    end
  end
end