Rails rescue_from 停止执行流程

Rails rescue_from stops execution flow

我在使用 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 方法捕获。问题是,在我捕捉到异常之后,应用程序流停止并且永远不会到达操作代码。 异常解救后是否可以继续执行?

简答,没有。 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