簡體   English   中英

在Flask中顯示Exception的最佳方法是什么?

[英]What's the best way to display Exception in Flask?

我是Flask的新手,並且嘗試顯示python中的內置異常 ,但是我似乎無法在它們的末端顯示它們。

注意:

set FLASK_DEBUG = 0

碼:

def do_something:
    try:
        doing_something()
    except Exception as err:
        return f"{err}"

期望:

  • 它將顯示內置異常之一:
    • KeyError
    • IndexError
    • NameError
    • 等等。

現實:

  • 它將返回無效的代碼行,這對最終用戶來說是更加模棱兩可的。

也:

  • 在調試模式為ON時我沒有看到錯誤的問題,但是如果我在公共場所打開它們,那不是我想要做的事情

試試這個:

def do_something:
    try:
        doing_something()
    except Exception as err:
        return f"{err.__class__.__name__}: {err}"

Flask為您提供了一個功能,使您可以在整個app程序中注冊錯誤處理app 您可以執行以下操作:

def handle_exceptions(e):
    # Log exception in your logs
    # get traceback and sys exception info and log as required   
    # app.logger.error(getattr(e, 'description', str(e)))

    # Print traceback

    # return your response using getattr(e, 'code', 500) etc. 

# Exception is used to catch all exceptions
app.register_error_handler(Exception, handle_exceptions)

我誠實地認為,這是要走的路。 -以werkzeug.exceptions.HTTPException的結構為例,這是一個堅實的基礎。

擁有一個統一的異常處理程序,它將使您的Exception處理,可視化和日志記錄標准化,從而使您的生活更美好。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM