Метод register_error_handler
Метод register_error_handler применяется к приложению Flask
и регистрирует функцию, которая будет вызвана при возникновении
определённой ошибки. Первым параметром передаётся код ошибки
(например, 404 или 500) либо класс исключения
(например, Exception). Вторым параметром передаётся
функция-обработчик, принимающая объект ошибки и возвращающая ответ.
В отличие от декоратора errorhandler, этот метод позволяет
зарегистрировать обработчик без применения декоратора, что удобно
при динамической регистрации или при работе с Blueprint.
Синтаксис
app.register_error_handler(code_or_exception, handler)
Пример
Давайте зарегистрируем обработчик для ошибки 404:
from flask import Flask, render_template
app = Flask(__name__)
def not_found(error):
return render_template('404.html'), 404
app.register_error_handler(404, not_found)
@app.route('/')
def index():
return 'hello'
Шаблон для страницы ошибки:
page not found
<-jinja+>
Результат выполнения кода для адреса /missing:
page not found
<-html+>Пример
Давайте зарегистрируем обработчик для класса исключения Exception:
from flask import Flask
app = Flask(__name__)
def handle_error(error):
return 'error occurred', 500
app.register_error_handler(Exception, handle_error)
@app.route('/')
def index():
raise Exception('something went wrong')
Результат выполнения кода для адреса /:
Пример
Давайте зарегистрируем несколько обработчиков для разных кодов ошибок:
from flask import Flask
app = Flask(__name__)
def not_found(error):
return 'not found', 404
def server_error(error):
return 'server error', 500
app.register_error_handler(404, not_found)
app.register_error_handler(500, server_error)
@app.route('/')
def index():
return 'hello'
Результат выполнения кода для адреса /missing:
Смотрите также
-
метод
errorhandler,
который регистрирует обработчик ошибки через декоратор -
метод
route,
который регистрирует функцию-обработчик для URL -
метод
register_blueprint,
который регистрирует Blueprint в приложении -
класс
Flask,
который представляет приложение Flask