我在提出例外时遇到了困难,例如:
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
我做错了吗?
答案 0 :(得分:3)
好吧,因为 reader 是一个空列表,所以永远不会执行for
循环。因此,line[999]
未执行。这就是为什么没有抛出异常的原因。
对于其他代码,抛出异常是因为您访问了空列表的0th
索引。尝试访问reader[0]
,看看是否有异常。
答案 1 :(得分:1)
这里的问题是你的文件是空的 - 这意味着你的for循环不会执行。