python3 with中異常的問題

2021-10-07 09:28:07 字數 653 閱讀 2191

問題:

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...