python - flask abort() inside try block behaviour -


when want use flask abort inside try block end in exception block

@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) 

gives output:

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 

and werkzeug notfound called , 500 response

when put abort(404) outside try: block, works , 404 response

  • edit

i found flask abort() uses werkzeug abort() class called aborter() when called raises "raise self.mapping[code](*args, **kwargs)"

does mean can not call abort inside own try block because raise exception , ends in exception?

flask.abort(...) raises exception, 1 of exceptions described in docs, subclasses of werkzeug.exceptions.httpexception. reason why code doesn't work.

but here other trivia:

given knowledge can rewrite code like:

@app.route('/newsletters/<int:newsletter_id>', methods=['get']) def route_get_newsletter(newsletter_id):     newsletter = get_newsletter(newsletter_id)     return jsonify(newsletter=newsletter)  @app.errorhandler(500) def catch_server_errors(e):     logging.exception("something awful happened!") 

Comments