当用before_request声明函数时,烧瓶会吞咽HTTPExceptions,而不是传播它们:
from flask import Flask
from werkzeug.exceptions import HTTPException
app = Flask(__name__)
@app.before_request
def f():
raise HTTPException("This is not propagated")
@app.route('/')
def test():
return 'This is a view'
if __name__ == '__main__':
app.run()控制台也不例外:
$ python flask_test1.py
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [02/Jun/2016 15:01:31] "GET / HTTP/1.1" 200 -浏览器显示:
Unknown Error
This is not propagated有什么办法强迫它吗?我需要指定一个设置,或者应该接口Werkzeug HTTPExceptions并引发定制的异常?
发布于 2016-06-02 20:50:48
可能的原因不是因为你不应该提高HTTPException本身。HTTPException本身应该是其他异常(如BadRequest或NotFound )的基类。
因为HTTPException没有要返回的HTTP代码,所以没有这样的代码被记录或发送给用户。如果您引发NotFound、BadRequest或HTTPException的任何子类,这些类都能正常工作,至少在烧瓶0.11中是这样的:
from werkzeug.exceptions import BadRequest
@app.before_request
def f():
raise BadRequest("This is definitely propagated")https://stackoverflow.com/questions/37600731
复制相似问题