Error handling

Error handling

Cole Varckin

Введение

Во время работы с API Telegram могут возникать ошибки и они должны быть правильно обработаны на клиенте.

Ошибки характеризуются несколькими параметрами:

Код Ошибки

Состояние HTTP. Содержит информацию о типе ошибки: например, ошибка ввода данных, ошибка конфиденциальности или ошибка сервера. Это обязательный параметр.

Тип Ошибки

Строковый параметр, в виде /[A-Z_0-9]+/, в котором обобщены проблемы. Например, AUTH_KEY_UNREGISTERED. Это необязательный параметр.

Описание Ошибки

Может содержать более подробные сведения об ошибке и способы ее решения, например: authorization required, используйте auth.* методы. Обратите внимание, что сведения могут меняться, следует избегать сложную логику обработки приложения на эти сообщения. Это необязательный параметр.

Конструктор Ошибок

Здесь должен быть представлен способ обработки ошибок, возвращаемых в rpc_error конструкторах.

Если ошибка конструктора не различает тип и описание, но вместо этого содержит одно поле под названием error_message (как в примере выше), она должна быть разбита на 2 составляющие, например, используя следующее регулярное выражение: /^([A-Z_0-9]+)(: (.+))?/.

Ниже приведен список кодов ошибок и их значения:


303 ERROR_SEE_OTHER

Запрос должен быть повторен, но его направили в другой центр обработки данных.

Примеры ошибок:

FILE_MIGRATE_X: файл будет доступен в настоящее время, но храниться будет в другом центре обработки данных.

PHONE_MIGRATE_X: номер телефона пользователь пытается использовать для авторизации с разных центров обработки данных.

NETWORK_MIGRATE_X: исходный IP-адрес связан с различными центрами обработки данных (для регистрации).

USER_MIGRATE_X: пользователь, чьи данные используются для выполнения запросов, связан с другим центром обработки данных (для регистрации).

Во всех этих случаях описания ошибок строковый параметр содержит номер центра обработки данных (вместо X), для которых должен будет отправлен повторный запрос.

Подробнее о переадресации между центрами обработки данных.


400 BAD_REQUEST

В случае, если запрос создается через форму и содержит пользовательские данные, пользователь должен быть уведомлен, что данные должны быть исправлены, прежде чем запрос повторится.

Примеры ошибок:

FIRSTNAME_INVALID: первое имя является недействительным.

LASTNAME_INVALID: второе имя является недействительным.

PHONE_NUMBER_INVALID: номер телефона недействителен.

PHONE_CODE_HASH_EMPTY: phone_code_hash отсутствует.

PHONE_CODE_EMPTY: phone_code отсутствует.

PHONE_CODE_EXPIRED: время кода подтверждения истекло.

API_ID_INVALID: в api_id комбинированные api_hash являются недействительными.

PHONE_NUMBER_OCCUPIED: номер телефона уже используется.

PHONE_NUMBER_UNOCCUPIED: номер телефона не используется.

USERS_TOO_FEW: недостаточно пользователей (например: для создания чата).

USERS_TOO_MUCH: максимальное количество пользователей превышено (например: для создания чата).

TYPE_CONSTRUCTOR_INVALID: конструктор Type является недействительным.

FILE_PART_INVALID: часть номера файла является недопустимым.

FILE_PARTS_INVALID: количество частей файла является недопустимым.

FILE_PART_X_MISSING: часть x (где x — номер) файла отсутствует в хранилище.

MD5_CHECKSUM_INVALID: Контрольные суммы MD5 не совпадают.

PHOTO_INVALID_DIMENSIONS: размер фотографии, является недействительными.

FIELD_NAME_INVALID: поле FIELD_NAME является недействительным.

FIELD_NAME_EMPTY: поле с именем FIELD_NAME отсутствует.

MSG_WAIT_FAILED: ожидание вызова вернул ошибку.


401 UNAUTHORIZED

Была попытка использовать функциональные возможности, которые доступны только для авторизованных пользователей.

Примеры ошибок:

AUTH_KEY_UNREGISTERED: ключ не зарегистрирован в системе.

AUTH_KEY_INVALID: ключ недействителен.

USER_DEACTIVATED: пользователь удален/деактивирован.

SESSION_REVOKED: авторизованная сессия была признана недействительной из-за прекращения всех сеансов.

SESSION_EXPIRED: авторизованная сессия истекла.

ACTIVE_USER_REQUIRED: метод доступен только авторизованным пользователям.

AUTH_KEY_PERM_EMPTY: метод unavailble временного ключа авторизации не привязан к постоянному ключу авторизации.


403 FORBIDDEN

Нарушение конфиденциальности. Например, попытка написать сообщение тому, кто внес в черный список текущего пользователя.


404 NOT_FOUND

Попытка вызвать несуществующий объект, например: метод.


420 FLOOD

Максимально допустимое количество попыток вызова данного метода с учетом входных параметров был превышен. Например, в попытке запросить большое количество текстовых сообщений (SMS) на один и тот же номер телефона.

Пример ошибки: FLOOD_WAIT_X: требуется подождать x секунд (где x — число)


500 INTERNAL

Произошла внутренняя ошибка сервера при обработке запроса: например, перебои при доступе к базе данных или файловому хранилищу.

Если клиент получает 500 INTERNAL, или вы считаете, что этой ошибки не должно было произойти, пожалуйста, соберите как можно больше информации о запросе и об ошибках и отправьте, пожалуйста, его разработчикам.


Other Error Codes

Если сервер возвращает ошибку с кодом, отличным от перечисленных выше, это может рассматриваться как ошибка 500 и как внутренняя ошибка сервера.


Источник: core.telegram.org

Telegram News в Telegram + чат и во ВКонтакте.

Report Page