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