mirror of
https://github.com/pyrogram/pyrogram
synced 2025-08-30 13:57:54 +00:00
Created Error Handling (markdown)
50
Error-Handling.md
Normal file
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**
|
Reference in New Issue
Block a user