[英]Flask-restful - During handling of the above exception, another exception occurred
[英]Flask-Restful taking over exception handling from Flask during non debug mode
我在開發期間使用了Flask的異常處理( @app.errorhander(MyException)
),即使對於來自Flask-Restful端點的異常也能正常工作。
但是,我注意到當切換到debug=False
,Flask-Restful完全接管異常處理(因為此propagate_exceptions
也是False
)。 我喜歡Flask-Restful為所有未處理的異常發送內部服務器錯誤,但遺憾的是,對於那些具有Flask異常處理程序的人(當這些異常來自Flask-Restful端點時)也會發生這種情況。
有沒有辦法告訴Flask-Restful只處理Flask錯誤處理程序無法處理的異常? 如果沒有,我可以將某些異常類型排除在Flask-Restful處理之外,那么它們會被Flask處理嗎?
我的最后一個選擇是覆蓋Flask-Restful的Api.handle_error
並自己實現這個邏輯,但我想首先使用現有的API ...
簡而言之,我的解決方案就是創建一個Api
子類,將其修改為僅處理HTTPException
類型的HTTPException
。
from flask_restful import Api as _Api
from werkzeug.exceptions import HTTPException
class Api(_Api):
def error_router(self, original_handler, e):
""" Override original error_router to only handle HTTPExceptions. """
if self._has_fr_route() and isinstance(e, HTTPException):
try:
return self.handle_error(e)
except Exception:
pass # Fall through to original handler
return original_handler(e)
也就是說,我認為首先覆蓋app.handle_user_exception
和app.handle_exception
是一個糟糕的設計決策,原因有幾個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.