当我想在 try 块中使用烧瓶中止时,我最终进入了我的异常块
@app.route('/newsletters/<int:newsletter_id>', methods=['GET'])
def route_get_newsletter(newsletter_id):
if request.method == 'GET':
try:
newsletter = get_newsletter(newsletter_id)
if not newsletter:
abort(404)
except Exception, ex:
logging.exception("Something awful happened!")
abort(500)
else:
return jsonify(newsletter=newsletter)
给出输出:
ERROR:root:Something awful happened!
Traceback (most recent call last):
File "natuurpuntapi.py", line 210, in route_get_newsletter
abort(404)
File "/usr/lib/python2.7/dist-packages/werkzeug/exceptions.py", line 525, in __call__
raise self.mapping[code](*args, **kwargs)
NotFound: 404: Not Found
并且 werkzeug NotFound 被调用,我得到 500 响应
当我将 abort(404) 放在 try: 块之外时,它可以工作并且我得到 404 响应
- 编辑
我发现烧瓶 abort() 使用 werkzeug abort() 这是一个名为 Aborter() 的类,当它被调用时它会引发“raise self.mapping [code](*args, **kwargs)”
这是否意味着我不能在我自己的 try 块中调用 abort ,因为它会引发异常并最终导致我的异常?