我遇到以下代码问题:
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
名称时,不会抛出异常,而是输出以下未捕获的异常。在
我不知道我做错了什么。我还尝试将异常代码重写为
except praw.errors.InvalidSubreddit:
这也不起作用。在
问题是,正如您的回溯所指出的,当您调用
get_subreddit
时不会发生异常事实上,当您调用get_hot
时也不会发生异常。第一种是延迟调用,它只创建一个虚拟的Subreddit
对象,但对它不做任何操作。第二个是一个生成器,它在您真正尝试遍历它之前不会发出任何请求。在因此,您需要围绕print语句(第30行)移动异常处理代码,而print语句正是在该语句中发出导致异常的请求。在
相关问题 更多 >
编程相关推荐