Python和P中的异常处理

2024-05-29 03:59:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到以下代码问题:

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名称时,不会抛出异常,而是输出以下未捕获的异常。在

^{pr2}$

我不知道我做错了什么。我还尝试将异常代码重写为

except praw.errors.InvalidSubreddit:

这也不起作用。在

编辑:exception info for Praw can be found here


Tags: 代码inimport名称forgetifhere
1条回答
网友
1楼 · 发布于 2024-05-29 03:59:07
File "./pyrig.py", line 30, in main
  print [str(x) for x in submissions]

问题是,正如您的回溯所指出的,当您调用get_subreddit时不会发生异常事实上,当您调用get_hot时也不会发生异常。第一种是延迟调用,它只创建一个虚拟的Subreddit对象,但对它不做任何操作。第二个是一个生成器,它在您真正尝试遍历它之前不会发出任何请求。在

因此,您需要围绕print语句(第30行)移动异常处理代码,而print语句正是在该语句中发出导致异常的请求。在

相关问题 更多 >

    热门问题