繁体   English   中英

引发异常后继续执行循环

[英]Continue the execution of a loop after an exception is raised

for item in r.get_iterator():
    if 'retweeted_status' in item:
        print('aa')
    else:
        id_twitty = item['id']
        count_ret = item['retweet_count']

如果item['id']抛出KeyError异常,则执行终止。

如何使for循环在异常后继续执行?

您可以尝试捕获引发的KeyError异常,然后将其丢弃:

for item in r.get_iterator():
    if 'retweeted_status' in item:
        print('aa')
    else:
        try:
            id_twitty = item['id']
            count_ret = item['retweet_count']
        except KeyError:
            pass

对于EAFP样式,您可以应用LBYL ,如果在item找不到id ,则使用continue

for item in r.get_iterator():
    if 'retweeted_status' in item:
        print('aa')
    elif 'id' not in item:
        continue
    else:
        id_twitty = item['id']
        count_ret = item['retweet_count']

您可以先检查item['id']存在:

for item in r.get_iterator():
    if 'retweeted_status' in item:
        print('aa')
    else:
        if 'id' in item:
            id_twitty = item['id']
            count_ret = item['retweet_count']

如果不存在,则使用None

for item in r.get_iterator():
    if 'retweeted_status' in item:
        print('aa')
    else:
        id_twitty = item.get('id')
        count_ret = item['retweet_count']

如果不存在,请使用其他一些默认值:

default_id = 0

for item in r.get_iterator():
    if 'retweeted_status' in item:
        print('aa')
    else:
        id_twitty = item.get('id', default_id)
        count_ret = item['retweet_count']
for item in r.get_iterator():
    if 'retweeted_status' in item:
        print('aa')
    else:
        id_twitty = item.get('id', None)
        count_ret = item.get('retweet_count', None)
        if not id_twitty or not count_ret:
            print "could not retrieve id or count"
            # handle error here

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM