1
私はflask
を使用しています。ここでは例を挙げています。私はフラスコのポータルからコードをコピーしました。アプリフラスコでの一般的な例外処理方法は?
(py35) [email protected]:tmp root$ flask run
* Serving Flask app "hello"
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
を実行
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
要求
[email protected]:~ root$ curl http://localhost:5000/
Hello, World!
を送信し、私は私の機能を変更して、エラーを発生させるためにそれを変更。
@app.route('/')
def hello_world():
print(xyz)
return 'Hello, World!'
私は、要求を送信しようとすると、それは
[2017-11-06 10:22:13,625] ERROR in app: Exception on/[GET]
Traceback (most recent call last):
File "/py35/lib/python3.5/site-packages/flask/app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "/py35/lib/python3.5/site-packages/flask/app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/py35/lib/python3.5/site-packages/flask/app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Users/nile2691/sbdev/StorageCenterUI/.tox/py35/lib/python3.5/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/py35/lib/python3.5/site-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "py35/lib/python3.5/site-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/private/tmp/hello.py", line 6, in hello_world
print(xyz)
NameError: name 'xyz' is not defined
を失敗した私は私のコードでtry...except
を追加しますが、実際のコードでは、その多くの場所で、私はこの一般的に対処したいいけないことができています例外はどこでも。
が、代わりに私がカスタムエラーメッセージを表示して、適切な出力を返すようにしたい
curl http://localhost:5000/
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>500 Internal Server Error</title>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.</p>
の下のような一般的なエラーを取得しての、この変更により
try:
process_flask_request()
except Exception as ex:
# Log detail exception
logger.exception(ex)
return "Custome error message for all general exception"
好きなようです。
おそらく、このファイルをhttp://flask.pocoo.org/docs/0.12/patterns/errorpages/ –
にチェックしてください。http://flask.pocoo.org/docs/latest/エラー処理/#アプリケーションエラー –