一、try...finally
高級語言通常都內置了一套try...except...finally...
的錯誤處理機制,Python也不例外.
當我們認爲某些代碼可能會出錯時,就可以用try
來運行這段代碼,如果執行出錯,則後續代碼不會繼續執行,而是直接跳轉至錯誤處理代碼,即except
語句塊,執行完except
後,如果有finally
語句塊,則執行finally
語句塊,至此,執行完畢。
如下所示:
try: print 'try...' r = 10 / 0 print 'result:', rexcept ZeroDivisionError, e: print 'except:', e finally: print 'finally...' print 'END'
二、with....as
這個語法是用來代替傳統的try...finally語法的。
with EXPRESSION [ as VARIABLE] WITH-BLOCK
基本思想是with所求值的對象必須有一個__enter__()方法,一個__exit__()方法。
緊跟with後面的語句被求值後,返回對象的__enter__()方法被調用,這個方法的返回值將被賦值給as後面的變量。當with後面的代碼塊全部被執行完之後,將調用前面返回對象的__exit__()方法。
file = open("/tmp/foo.txt") try: data = file.read() finally: file.close()
而使用with as寫法如下:
with open("/tmp/foo.txt") as file: data = file.read()