@@ -131,7 +131,7 @@ dp.register_message_handler(cmd_test2, commands="test2")
131
131
## Обработка ошибок
132
132
133
133
При работе бота неизбежно возникновение различных ошибок, связанных не с кодом, а с внешними событиями. Простейший пример:
134
- попытка отправить сообщение пользователю, заблокировавшему бота. Оборачивать каждый вызов в try..except некрасиво, поэтому
134
+ попытка отправить сообщение пользователю, заблокировавшему бота. Чтобы не оборачивать каждый вызов в ` try..except ` ,
135
135
в aiogram существует специальный хэндлер для исключений, связанных с Bot API.
136
136
Рассмотрим следующий пример кода, имитирующий задержку перед ответом пользователю:
137
137
``` python
@@ -162,6 +162,12 @@ async def error_bot_blocked(update: types.Update, exception: BotBlocked):
162
162
возникнуть в различных хэндлерах, то можно вынести её обработку в отдельный хэндлер ошибок. Кода будет меньше, а оставшийся
163
163
станет читабельнее.
164
164
165
+ !!! warning "Важно"
166
+ У errors_handler есть одна особенность, из-за которой его использование может быть нежелательно. Дело в том, что
167
+ после срабатывания и завершения хэндлера, управление в исходную функцию ** не возвращается** . Проще говоря, если,
168
+ например, 57-я итерация цикла из 100 привела к срабатыванию errors_handler, остальные итерации выполнены не будут,
169
+ как и весь остальной код исходной функции. В этом случае ничего не остаётся, кроме как использовать ` try..except ` .
170
+
165
171
## Синтаксический сахар
166
172
167
173
Для того, чтобы сделать код чище и читабельнее, aiogram расширяет возможности стандартных объектов Telegram.
0 commit comments