jesteś tutaj�
433
Obsługa wyjątków
Powrót do kodu naszej aplikacji WWW
Przypomnij sobie z początku tego rozdziału, że wskazaliśmy pewien problem związany z wywołaniem
funkcji
log_request
z wnętrza funkcji
do_search
należącej do kodu programu vsearch4web.py.
Konkretnie martwiło nas tam, co należy zrobić, gdy wywołanie to się nie powiedzie.
...
@app.route(‘/search4’, methods=[‘POST’])
def do_search() -> ‘html’:
phrase = request.form[‘phrase’]
letters = request.form[‘letters’]
title = ‘Oto Twoje wyniki:’
results = str(search4letters(phrase, letters))
log_request(request, results)
return render_template(‘results.html’,
the_title=title,
the_phrase=phrase,
the_letters=letters,
the_results=results,)
...
4. Co się stanie,
gdy ta operacja
się nie uda?
To nie jest coś, co
chciałbyś pokazywać
użytkownikom swojej
aplikacji WWW.
Dzięki naszym dociekaniom wiemy już, że wywołanie to może się nie powieść, jeśli baza danych pracująca po
stronie backendu będzie niedostępna lub jeśli wystąpi jakiś inny błąd. Jeśli pojawi się błąd (dowolnego typu),
aplikacja WWW zareaguje, wyświetlając dość nieprzyjaźnie wyglądającą stronę, która prawdopodobnie raczej
zdezorientuje użytkowników, zamiast poinformować ich o problemie w odpowiedni sposób.
Chociaż jest to ważne z naszego punktu widzenia, logowanie każdego żądania sieciowego
obsługiwanego przez aplikację WWW nie jest czymś, co szczególnie interesuje jej użytkowników;
wszystkim, co chcą oni widzieć, są wyniki ich wyszukiwań. W związku z tym zmieńmy kod
naszej aplikacji w taki sposób, aby radziła ona sobie z błędami pojawiającymi się przy okazji
wykonywania funkcji
log_request
, obsługując wszystkie zgłoszone wyjątki po cichu.
Get Python Rusz głową! Wydanie II now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.