Action Dispatch ShowExceptions
此中間件會救援應用程式傳回的任何例外,並呼叫例外應用程式,將其包裝成適合最終使用者的格式。
例外應用程式應在初始化 ShowExceptions
時傳遞為參數。每當有例外發生時,ShowExceptions
會將例外儲存在 env["action_dispatch.exception"]
中,將 PATH_INFO
改寫為例外狀態碼,並呼叫 Rack 應用程式。
在 Rails 應用程式中,例外應用程式可以使用 config.exceptions_app
設定,其預設值為 ActionDispatch::PublicExceptions
。
如果應用程式傳回的回應中,X-Cascade
標頭設定為 "pass"
,此中間件會傳送一個空的回應,並附上正確的狀態碼。如果在例外應用程式中發生任何例外,此中間件會捕捉例外並傳回一個安全回應。
方法
類別公開方法
new(app, exceptions_app) 連結
來源:顯示 | 在 GitHub 上
# 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) 連結
來源:顯示 | 在 GitHub 上
# 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