在循环中尝试/除外

时间:2013-06-20 11:40:18

标签: python exception python-2.7 exception-handling

我在提出例外时遇到了困难,例如:

import csv

o = open('/home/foo/dummy.csv', 'r') # Empty file!
reader = csv.reader(o, delimiter=';')
reader = list(reader)

try:
    for line in reader:
        print line[999] # Should raise index out of range!
except Exception, e:
    print e

基本上csv.reader读取空文件,转换为空列表,上面的代码应该打印IndexError。但事实并非如此。 但是,下面的代码完美地提出了:

print reader[0][999]

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range

我做错了吗?

2 个答案:

答案 0 :(得分:3)

好吧,因为 reader 是一个空列表,所以永远不会执行for循环。因此,line[999]未执行。这就是为什么没有抛出异常的原因。

对于其他代码,抛出异常是因为您访问了空列表的0th索引。尝试访问reader[0],看看是否有异常。

答案 1 :(得分:1)

这里的问题是你的文件是空的 - 这意味着你的for循环不会执行。