2
0
mirror of https://github.com/pyrogram/pyrogram synced 2025-08-22 09:57:19 +00:00
1
Error Handling
Dan edited this page 2017-12-17 13:42:46 +01:00

Errors are inevitable when working with the API, and they must be correctly handled by the use of try..except blocks.

There are many errors that Telegram servers could return, but they all fall in one of these five categories (which are in turn children of the Error superclass):

  • (400) BadRequest
  • (420) Flood
  • (500) InternalServerError
  • (303) SeeOther
  • (401) Unauthorized

As stated above, there are really many (too many) errors, and in case Pyrogram does not know anything about a specific error, it raises a special (520) UnknownError exception and logs it in the unknown_errors.txt file. Users are invited to report these unknown errors; in later versions of Pyrogram some kind of automatic error reporting module might be implemented.

Examples

from pyrogram.api.errors import (
    BadRequest, Flood, InternalServerError,
    SeeOther, Unauthorized, UnknownError
)

try:
    # Something
    pass
except BadRequest:
    pass
except Flood:
    pass
except InternalServerError:
    pass
except SeeOther:
    pass
except Unauthorized:
    pass
except UnknownError:
    pass

Exceptions may also contain some informative values which can be useful. e.g. FloodWait holds the amount of seconds you have to wait before you can try again. The value is always stored in the x field of the returned exception object:

from pyrogram.api.errors import FloodWait

try:
    # something
    pass
except FloodWait as e:
    print(e.x)

TODO: Better explanation on how to deal with exceptions