2010-10-22 34 views
3

可能重複:
Python try-elseelse子句...它是什麼好

從Java正在添加背景,我不太得到else條款是什麼對你有好處。

按照文檔

這是一個必須如果try子句不 引發異常被 執行的代碼是有用的。

但是,爲什麼不把代碼放在try塊後?看來我在想念着一些重要的東西在這裏...

+3

此問題已在此問題中討論過:http://stackoverflow.com/questions/855759/python-try-else – 2010-10-22 11:31:14

+2

雖然很多人都將此標記爲上述問題的一個副本,但它看起來並不真實以解決OP在這裏所詢問的區別,即在* try塊之後和else子句之間放*。 AndrewBC的回覆下面的答案好多了。我的貢獻http://stackoverflow.com/a/22579805/1503120也可能有用。 – jamadagni 2014-03-22 18:11:26

回答

10

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

3

考慮一下,如果你把第二printtry/except/else

try: 
    a = 1/0 
except ZeroDivisionError: 
    print "Division by zero not allowed." 
else: 
    print "In this universe, division by zero is allowed." 

會發生什麼?

+0

這比將'a'分配給''''之前'比'這個例子等效的'except'更好,因爲它可以防止捕獲不需要的異常。 – intuited 2010-10-22 12:09:40

2

這是代碼要執行只有時沒有出現異常。

相關問題