Exceptions

This page documents the exceptions that can occur while running PRAW and what they mean. The exceptions can be divided into three rough categories and a full list of the ClientException s and APIException s that can occur can be found in the errors module.

ClientException

Something went wrong on the client side of the request. All exceptions of this nature inherit from the exception class ClientException. Most of these exceptions occur when you try to do something you don’t have authorization to do. For instance trying to remove a submission in a subreddit where the logged-in user is not a moderator will throw a ModeratorRequired error.

APIException

Something went wrong on the server side of the request. All exceptions of this nature inherit from the exception class APIException. They deal with all sorts of errors that can occur with requests such as trying to login with the incorrect password, which raise a InvalidUserPass.

Other

All other errors. The most common occurrence is when reddit return a non-200 status code that isn’t handled by PRAW. This will raise a HttpError from the requests library that PRAW uses to make the HTTP requests. What they mean depend on the status code that raised the HttpError.

301, 302

Redirects. Are automatically handled in PRAW, but may result in a RedirectException if an unexpected redirect is encountered.

403

This will occur if you try to access a restricted resource. For instance a private subreddit that the currently logged-in user doesn’t have access to.

>>> import praw
>>> r = praw.Reddit('404 test by u/_Daimon_')
>>> r.get_subreddit('lounge', fetch=True)

500

An internal error happened on the server. Sometimes there’s a temporary hiccup that cause this and repeating the request will not re-raise the issue. If it’s consistently thrown when you call the same PRAW method with the same arguments, then there’s either a bug in the way PRAW parses arguments or in the way reddit handles them. Create a submission on r/redditdev so that the right people become aware of the issue and can solve it.

502, 503, 504

A temporary issue at reddit’s end. Usually only happens when the servers are under very heavy pressure. Since it’s a temporary issue, PRAW will automatically retry the request for you. If you’re seeing this error then PRAW has either failed with this request 3 times in a row or it’s a request that adds something to reddit’s database like add_comment(). In this case, the error may be thrown after the comment was added to reddit’s database, so retrying the request could result in duplicate comments. To prevent duplication such requests are not retried on errors.