2

次のコードに問題があります。

import praw
import argparse

# argument handling was here

def main():
    r = praw.Reddit(user_agent='Python Reddit Image Grabber v0.1')
    for i in range(len(args.subreddits)):
        try:
            r.get_subreddit(args.subreddits[i]) # test to see if the subreddit is valid
        except:
            print "Invalid subreddit"
        else:
            submissions = r.get_subreddit(args.subreddits[i]).get_hot(limit=100)
            print [str(x) for x in submissions]

if __name__ == '__main__':
    main()

subreddit名前はプログラムへの引数として取られます。

に無効args.subredditsが渡されるとget_subreddit、例外がスローされますが、これは上記のコードでキャッチする必要があります。

有効なargs.subreddit名前が引数として与えられると、プログラムは正常に実行されます。

ただし、無効なargs.subreddit名前が指定された場合、例外はスローされず、代わりに次のキャッチされない例外が出力されます。

Traceback (most recent call last):
  File "./pyrig.py", line 33, in <module>
    main()
  File "./pyrig.py", line 30, in main
    print [str(x) for x in submissions]
  File "/usr/local/lib/python2.7/dist-packages/praw/__init__.py", line 434, in get_content
    page_data = self.request_json(url, params=params)
  File "/usr/local/lib/python2.7/dist-packages/praw/decorators.py", line 95, in wrapped
    return_value = function(reddit_session, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/praw/__init__.py", line 469, in request_json
    response = self._request(url, params, data)
  File "/usr/local/lib/python2.7/dist-packages/praw/__init__.py", line 342, in _request
    response = handle_redirect()
  File "/usr/local/lib/python2.7/dist-packages/praw/__init__.py", line 316, in handle_redirect
    url = _raise_redirect_exceptions(response)
  File "/usr/local/lib/python2.7/dist-packages/praw/internal.py", line 165, in _raise_redirect_exceptions
    .format(subreddit))
praw.errors.InvalidSubreddit: `soccersdsd` is not a valid subreddit

何が間違っているのかわかりません。また、例外コードを次のように書き換えてみました

except praw.errors.InvalidSubreddit:

これも機能しません。

編集: Praw の例外情報はここにあります

4

1 に答える 1