從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