可能重复:
Python try-else
作为一个有Java背景的人,我不太明白else
从句有什么用。
根据文档
它对于必须执行的代码很有用 如果try子句没有引发异常。
但是为什么不将代码放在try块后面呢?这似乎很重要...
可能重复:
Python try-else
作为一个有Java背景的人,我不太明白else
从句有什么用。
根据文档
它对于必须执行的代码很有用 如果try子句没有引发异常。
但是为什么不将代码放在try块后面呢?这似乎很重要...
else
子句之所以有用,是因为你可以确定try
代码块中的代码执行成功。例如:for arg in sys.argv[1:]:
try:
f = open(arg, 'r')
except IOError:
print 'cannot open', arg
else:
print arg, 'has', len(f.readlines()), 'lines'
f.close()
你可以安全地对f
执行操作,因为你知道它的赋值成功了。如果代码只是在try ... except之后,你可能没有一个f
。
请考虑
try:
a = 1/0
except ZeroDivisionError:
print "Division by zero not allowed."
else:
print "In this universe, division by zero is allowed."
print
放在try/except/else
块之外,会发生什么?a
的赋值之后、在except
之前更好——这相当于这个例子——因为它可以防止捕获不需要的异常。 - intuited这段代码只会在没有异常被抛出时才执行。