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
我在使用 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