Error handling¶
You can import ro.py exceptions from the roblox.utilities.exceptions or just from the roblox library:
from roblox.utilities.exceptions import InternalServerError
from roblox import InternalServerError
Client errors¶
All of the Client.get_SINGULAR() methods, like get_user() and get_group(), raise exceptions when you pass an
invalid input.
| Method | Exception |
|---|---|
client.get_asset() |
AssetNotFound |
client.get_badge() |
BadgeNotFound |
client.get_group() |
GroupNotFound |
client.get_place() |
PlaceNotFound |
client.get_plugin() |
PluginNotFound |
client.get_universe() |
UniverseNotFound |
client.get_user() |
UserNotFound |
client.get_user_by_username() |
UserNotFound |
Here is an example of catching a UserNotFound error:
username = "InvalidUsername!!!"
try:
user = await client.get_user_by_username(username)
print("ID:", user.id)
except UserNotFound:
print("Invalid username.")
All of these exceptions are subclasses of ItemNotFound.
HTTP errors¶
ro.py also raises HTTP errors when Roblox says something is wrong.
For example, if we try to shout on a group that we don't have permissions on, Roblox stops us and returns a
401 Unauthorized error:
group = await client.get_group(1)
await group.update_shout("Shout!")
roblox.utilities.exceptions.Unauthorized: 401 Unauthorized: https://groups.roblox.com/v1/groups/1/status.
Errors:
0: Authorization has been denied for this request.
Unauthorized error:
group = await client.get_group(1)
try:
await group.update_shout("Shout!")
print("Shout updated.")
except Unauthorized:
print("Not allowed to shout.")
These are the different types of exceptions raised depending on the HTTP error Roblox returns:
| HTTP status code | Exception |
|---|---|
| 400 | BadRequest |
| 401 | Unauthorized |
| 403 | Forbidden |
| 429 | TooManyRequests |
| 500 | InternalServerError |
All of these exceptions are subclasses of the HTTPException error.
For other unrecognized error codes, ro.py will fallback to the default HTTPException.
Getting more error information¶
For all HTTP exceptions, ro.py exposes a response attribute so you can get the response information:
group = await client.get_group(1)
try:
await group.update_shout("Shout!")
print("Shout updated.")
except Unauthorized as exception:
print("Not allowed to shout.")
print("URL:", exception.response.url)
.errors attribute, which is a list of
ResponseError:
group = await client.get_group(1)
try:
await group.update_shout("Shout!")
print("Shout updated.")
except Unauthorized as exception:
print("Not allowed to shout.")
if len(exception.errors) > 0:
error = exception.errors[0]
print("Reason:", error.message)