flask異常丟擲與捕獲
阿新 • • 發佈:2018-11-25
異常丟擲
abort 方法
丟擲一個給定狀態程式碼的 HTTPException 或者 指定響應,例如想要用一個頁面未找到異常來終止請求,你可以呼叫 abort(404)。
引數:code – HTTP的錯誤狀態碼
丟擲狀態碼的話,只能丟擲 HTTP 協議的錯誤狀態碼
from flask import Flask abort app = Flask(__name__) @app.route("/") def index(): abort(404) # 丟擲異常 return 'index page is show' if __name__ == '__main__': app.run(debug=True)
捕獲異常
errorhandler 裝飾器
註冊一個錯誤處理程式,當程式丟擲指定錯誤狀態碼的時候,就會呼叫該裝飾器所裝飾的方法
引數:code_or_exception – HTTP的錯誤狀態碼
from flask import Flask
app = Flask(__name__)
@app.errorhandler(404)
def demo1():
return '您訪問的頁面已經去浪跡天涯了'
if __name__ == '__main__':
app.run(debug=True)
引數:捕獲指定異常
from flask import Flask app = Flask(__name__) @app.route("/") def index(): a = 1 / 0 # 除數為零了 return 'index page is show' @app.errorhandler(ZeroDivisionError) def zero_division_error(e): return '除數不能為0' if __name__ == '__main__': app.run(debug=True)
在開發時,後臺出現異常 ,但不想把異常顯示給使用者或者要統一處理異常時,可以使用abort主動丟擲異常,再捕獲異常返回美化後的頁面。
from flask import Flask, redirect, url_for, abort app = Flask(__name__) @app.route("/") def index(): abort(404) # 丟擲異常 return 'index page is show' @app.route('/demo1') def demo1(): return '您訪問的頁面已經去浪跡天涯了' @app.errorhandler(404) # 捕獲異常 def demo(e): return redirect(url_for('demo1')) # 跳轉到demo1頁面 if __name__ == '__main__': app.run(debug=True)