在 Flask 程序中,使用 app.errorhandler() 裝飾器能夠註冊錯誤處理函數,傳入 HTTP 錯誤狀態碼或是特定的異常類,好比:app
@app.errorhandler(404)
def error_404(e):
return '404 Error', 404複製代碼
若是發生 404 錯誤,就會觸發這個函數獲取返回值做爲響應主體。函數
一般咱們會爲不一樣的 HTTP 錯誤編寫各自的的錯誤處理函數,以便返回不一樣的響應。若是你願意的話,咱們也能夠編寫一個統一的錯誤處理函數,這個函數會處理全部的 HTTP 錯誤,只須要在裝飾器內傳入 Exception 類便可:spa
@app.errorhandler(Exception)
def all_exception_handler(e):
return 'Error', 500複製代碼
如今全部的 HTTP 錯誤都會觸發這個函數。你也能夠在函數中對錯誤進行分類處理:調試
@app.errorhandler(Exception)
def all_exception_handler(e):
# 對於 HTTP 異常,返回自帶的錯誤描述和狀態碼
# 這些異常類在 Werkzeug 中定義,均繼承 HTTPException 類
if isinstance(e, HTTPException):
return e.desciption, e.code
return 'Error', 500 # 通常異常複製代碼
若是你使用 Flask 0.12 版本,則須要參考這個 SO 回答重寫相關方法。code
附註一些關於錯誤處理的小知識:對象