4

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 応答が返されます

  • 編集

これが呼び出されると、flask abort() は、Aborter() というクラスである werkzeug abort() を使用し、「raise self.mapping[code](*args, **kwargs)」を発生させることがわかりました。

これは、例外が発生し、例外が発生するため、自分の try ブロック内で中止を呼び出すことができないということですか?

4

2 に答える 2