2013-06-23 41 views
2

我已經閱讀了很多關於調試try,exception,finally的資源。我明白,當我們嘗試一些代碼時,可能會有一些例外。但我不明白爲什麼有時候我們最終會使用,當我們已經有異常?爲什麼有時候最後會被用於調試?

+2

終於'**總是**執行。有時候'exception'後面的代碼可能不會被執行。(想想* exception中的異常被拋出的情況) – Maroun

回答

2

documentation所示,finally子句對釋放外部資源非常有用,無論使用是否成功。這些外部資源可以是文件或網絡連接,在任何情況下都需要進行清理。

例如:

try: 
    f = open("testfile", "w") 
    try: 
     f.write("This may not work!") 
    finally: 
     f.close() 
except IOError: 
    print("Error! Can't find file") 

f.close()會一直執行的語句,所以即使寫入操作拋出一個異常,該文件將始終在結束時關閉。

相關問題