跳至內容 跳至搜尋

Action Dispatch ShowExceptions

此中間件會救援應用程式傳回的任何例外,並呼叫例外應用程式,將其包裝成適合最終使用者的格式。

例外應用程式應在初始化 ShowExceptions 時傳遞為參數。每當有例外發生時,ShowExceptions 會將例外儲存在 env["action_dispatch.exception"] 中,將 PATH_INFO 改寫為例外狀態碼,並呼叫 Rack 應用程式。

在 Rails 應用程式中,例外應用程式可以使用 config.exceptions_app 設定,其預設值為 ActionDispatch::PublicExceptions

如果應用程式傳回的回應中,X-Cascade 標頭設定為 "pass",此中間件會傳送一個空的回應,並附上正確的狀態碼。如果在例外應用程式中發生任何例外,此中間件會捕捉例外並傳回一個安全回應。

方法
C
N

類別公開方法

new(app, exceptions_app)

# File actionpack/lib/action_dispatch/middleware/show_exceptions.rb, line 25
def initialize(app, exceptions_app)
  @app = app
  @exceptions_app = exceptions_app
end

實體公開方法

call(env)

# File actionpack/lib/action_dispatch/middleware/show_exceptions.rb, line 30
def call(env)
  @app.call(env)
rescue Exception => exception
  request = ActionDispatch::Request.new env
  backtrace_cleaner = request.get_header("action_dispatch.backtrace_cleaner")
  wrapper = ExceptionWrapper.new(backtrace_cleaner, exception)
  if wrapper.show?(request)
    render_exception(request, wrapper)
  else
    raise exception
  end
end