[英]Comma in except clause
我尝试搜索,但找不到任何东西。 但是我可能只是说错了。 在书中,我正在阅读。 Dave Kuhlman的Python书他写了try:except语句来捕获IOError。
def test():
infilename = 'nothing.txt'
try:
infile = open(infilename, 'r')
for line in infile:
print line
except IOError, exp:
print 'cannot open file "%s"' % infilename
我的问题是IOError之后的exp是多少。 它是做什么的,为什么在那里?
它为except
块内的异常提供了一个变量名:
>>> try:
... raise Exception('foo')
... except Exception, ex:
... print ex
... print type(ex)
...
foo
<type 'exceptions.Exception'>
我个人发现as
语法更加清晰:
>>> try:
... raise Exception('foo')
... except Exception as ex:
... print ex
... print type(ex)
...
foo
<type 'exceptions.Exception'>
但是根据该问题的答案,直到2.6才引入as语法。
exp
是将异常对象分配给的变量。 引发异常时,Python创建一个异常对象,该对象包含有关错误的更多信息,包括堆栈跟踪,通常还包含错误消息。 这段代码实际上并没有使用exp
,因此将其省略会更干净。
except: IOError, exp:
应该是这样的:
except IOError, exp:
exp存储错误msg,因此exp的值为:没有这样的文件或目录:XXX
您可以将其重命名为其他任何名称
它包含错误消息,堆栈跟踪以及有关该错误的其他信息。 尽管该特定代码摘录实际上并未使用该信息,但它在生产环境中是有意义的,在生产环境中,错误日志记录对于调试很重要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.