2
0
mirror of https://github.com/pyrogram/pyrogram synced 2025-08-30 13:57:54 +00:00

Created Error Handling (markdown)

Dan
2017-12-17 13:42:46 +01:00
parent aa47808e3b
commit b2855e0416

50
Error-Handling.md Normal file

@@ -0,0 +1,50 @@
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
``` python
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:
``` python
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**