Rails rescue_from停止执行流程

buk*_*530 3 ruby ruby-on-rails 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
Run Code Online (Sandbox Code Playgroud)

如您所见,在这段代码中,我只是在操作开始之前引发了一个异常,该异常由rescue_exception方法捕获。问题是,在我捕获到异常之后,应用程序流程停止并且操作代码从未到达。抢救异常后是否可以继续执行?

mes*_*jah 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
Run Code Online (Sandbox Code Playgroud)