問題:
python中 with語句可以幫助 開啟和關閉一些東西,比如用open的時候,那如果在在with語句之前加上了try 在 with語句中如果出現異常了,走到exception 後,with還會對程式進行關閉嗎?
答案:with是上下文管理器協議 例項如下:
try:
with open('***') as fin:
pass
except exception:
pass
上下文管理器協議的本質就是【try-finally結構】:
try:
try:
fin = open('***')
pass
finally:
fin.close()
except exception:
pass
再來要理解finally的本質:暫時壓制try子句中丟擲的異常,直到finally子句執行完畢後,再將其重新丟擲。
上面**中,如果內層try子句的pass部分出現了異常,會先被finally捕獲並處理,然後才會進入外層的except子句。
那麼這個內層try子句的pass部分是什麼呢?就是with結構中的語句。所以with結構在任何情況下都能順利完成清理工作。
python3 中的異常處理
try的工作原理 ry except else finally 使用 異常處理 def temp convert a print int a 不捕獲程式在此處終止 try print int a except valueerror as argument print 引數沒有包含數字 n argum...
Python3中的異常處理
即超出程式正常執行流程的某些特殊條件 python標準異常 捕捉異常可以使用try except語句。try except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常資訊並處理。如果你不想在異常發生時結束你的程式,只需在try裡捕獲它。語法 以下為簡單的try except el...
python3中異常處理 Python3異常處理
python的異常處理機制 使用 try.except 捕獲異常 try 業務實現 except error1,error2,as e 出現異常後的處理 異常類的繼承關係 baseexception systemexit keyboardinterrupt generatorexit excepti...