从Java正在添加背景,我不太得到else
条款是什么对你有好处。
按照文档
这是一个必须如果try子句不 引发异常被 执行的代码是有用的。
但是,为什么不把代码放在try块后?看来我在想念着一些重要的东西在这里...
从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
安全地进行操作,因为你知道它的分配成功了。如果代码只是在尝试后......除了,你可能没有f
。
考虑一下,如果你把第二print
外try/except/else
块
try:
a = 1/0
except ZeroDivisionError:
print "Division by zero not allowed."
else:
print "In this universe, division by zero is allowed."
会发生什么?
这比将'a'分配给''''之前'比'这个例子等效的'except'更好,因为它可以防止捕获不需要的异常。 – intuited 2010-10-22 12:09:40
这是代码要执行只有时没有出现异常。
此问题已在此问题中讨论过:http://stackoverflow.com/questions/855759/python-try-else – 2010-10-22 11:31:14
虽然很多人都将此标记为上述问题的一个副本,但它看起来并不真实以解决OP在这里所询问的区别,即在* try块之后和else子句之间放*。 AndrewBC的回复下面的答案好多了。我的贡献http://stackoverflow.com/a/22579805/1503120也可能有用。 – jamadagni 2014-03-22 18:11:26