无法捕捉异常

时间:2013-10-17 13:16:50

标签: python exception

我有以下代码:

def coming_episode ( show ):
    try:
        show = api.search ( show , 'en' ) [ 0 ]
    except:
        print "a"
        return

    announced = [ 'show title' ]

    for e in show [ len ( show ) -1 ]:
            if e.FirstAired != '' and time.time () < time.mktime ( e.FirstAired.timetuple () ):
                    announced.append ( [ e.EpisodeName , e.id , time.mktime ( e.FirstAired.timetuple () ) ] )
    return announced

当我寻找TVDB api中存在的节目时,这种方法很好用。但是,当我输入一些愚蠢的内容时,我也希望捕获异常,例如“awdawd”作为节目。

我尝试except:except TVDBIndexError:,但两者仍然给我以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "init.py", line 27, in <module>
    series                  = coming_episode ( series )
  File "init.py", line 19, in coming_episode
    for e in show [ len ( show ) -1 ]:
  File "/Users/Sites/Python/_envs/Series/lib/python2.7/site-packages/pytvdbapi/api.py", line 340, in __getitem__
    raise error.TVDBIndexError("Season {0} not found".format(item))
pytvdbapi.error.TVDBIndexError: (u'Season 0 not found', (), {})

我在这里做错了什么?

提前致谢;)

2 个答案:

答案 0 :(得分:4)

我猜你使用pytvdbapi,所以我从here获取了所有信息。

使用时

for e in show [ len ( show ) -1 ]

你遍历节目的单个季节的每一集。

当一个节目有3个季节时,你会在第2季迭代(len(show) == 33 - 1 == 2

如果节目只有一个季节,那么您尝试迭代的季节是len(show) == 1 =&gt; 1 - 1 = 0 =&gt; 0,但没有季节0,只有一个季节1,因此会出现错误。 (我不确定,但是如果找不到节目,那么仍然有Show个实例,其中有一个空的Season实例。

您可能想要使用:

for s in show:      # for each season in show
    for e in s:     # for each episode in season
        if e.FirstAired != '' and time.time (...

答案 1 :(得分:0)

没关系......它突然起作用了。复制粘贴代码现在在不同的机器上,它的工作原理。奇怪的东西......