什麼時候Python中try異常捕獲finally一定要用到
阿新 • • 發佈:2020-07-28
import random def raise_valueError(fw): print(fw) raise_e = random.choice((True, False)) if raise_e: # 假設這個異常不一定觸發 raise ValueError def try_finally(): file = 'abc.txt' fw = open(file, 'r') # 檔案等資源,有開啟的話,必須關閉 try: print('try runs -------------') raise_valueError(fw) # fw.close() # 這裡fw.close()可能是執行不到的,這裡開啟檔案可以有with open單不是每種資源開啟都有with這種寫法 return 'try' except ValueError: # fw.close() # 這裡fw.close()也可能是執行不到的 print('except valueError runs -------------') return 'except valueError' finally: fw.close() # 這裡fw.close()是一定執行得到的 print('finally runs -------------') return 'finally' # fw.close# 這裡fw.close()一定執行不到的 if __name__ == '__main__': ret = try_finally() print('ret', ret) # 如有finally有return, ret一定是finally的返回值,否則是地方的返回值