Исключение RoutingException
Исключение RoutingException наследуется от класса
HTTPException
и является базовым для ошибок, возникающих при обработке
маршрутов. Оно не имеет собственного кода состояния HTTP,
так как служит основой для специализированных исключений,
таких как RequestRedirect
и BuildError.
Эти исключения возникают при перенаправлениях и ошибках
построения URL.
Синтаксис
from werkzeug.routing import RoutingException
raise RoutingException(description=None)
Пример
Давайте создадим исключение RoutingException
и получим его описание:
from flask import Flask
from werkzeug.routing import RoutingException
app = Flask(__name__)
@app.route('/')
def index():
try:
raise RoutingException(description='routing error')
except RoutingException as e:
return e.get_description()
Результат выполнения кода:
<+html+>
routing error
<-html+>
Пример
Давайте проверим, что RequestRedirect
является наследником RoutingException:
from flask import Flask
from werkzeug.routing import RoutingException
from werkzeug.routing import RequestRedirect
app = Flask(__name__)
@app.route('/')
def index():
exc = RequestRedirect('/new')
res = isinstance(exc, RoutingException)
return str(res)
Результат выполнения кода:
<+html+>
True
<-html+>
Пример
Давайте перехватим RoutingException
при обработке маршрута с редиректом:
from flask import Flask
from werkzeug.routing import RoutingException
app = Flask(__name__)
@app.route('/old')
def old():
raise RoutingException(description='page moved')
@app.errorhandler(RoutingException)
def handle_routing(exc):
return exc.get_description(), 301
Результат выполнения кода для адреса /old:
<+html+>
page moved
<-html+>
Смотрите также
-
класс
HTTPException,
базовый класс для всех HTTP-исключений Flask -
исключение
RequestRedirect,
которое возникает при перенаправлении запроса -
исключение
BuildError,
которое возникает при ошибке построения URL -
метод
get_description,
который возвращает описание исключения