58 python 異常的傳遞

2021-09-26 06:20:42 字數 2170 閱讀 4204

import time

try:

f =open

('test.txt'

)try

:while

true

: content = f.readline()if

len(content)==0

:break

time.sleep(2)

print

(content)

finally

: f.close(

)print

('關閉檔案'

)except

:print

("沒有這個檔案"

)

執行結果:

in [26]

:import time

...:try:.

..: f =

open

('test.txt').

..:try:.

..:while

true:.

..: content = f.readline().

..:if

len(content)==0

:...

:break..

.: time.sleep(2)

...:

print

(content)..

.:finally:.

..: f.close().

..:print

('關閉檔案').

..:except:.

..:print

("沒有這個檔案").

..:finally:.

..:print

("最後的finally").

..:

******x---

>這是test.txt檔案中讀取到資訊

^c關閉檔案

沒有這個檔案

最後的finally

def

test1()

:print

("----test1-1----"

)print

(num)

print

("----test1-2----"

)def

test2()

:print

("----test2-1----"

) test1(

)print

("----test2-2----"

)def

test3()

:try

:print

("----test3-1----"

) test1(

)print

("----test3-2----"

)except exception as result:

print

("捕獲到了異常,資訊是:%s"

%result)

print

("----test3-2----"

) test3(

)print

("------華麗的分割線-----"

) test2(

)

執行結果:

如果try巢狀,那麼如果裡面的try沒有捕獲到這個異常,那麼外面的try會接收到這個異常,然後進行處理,如果外邊的try依然沒有捕獲到,那麼再進行傳遞。。。

如果乙個異常是在乙個函式中產生的,例如函式a---->函式b---->函式c,而異常是在函式c中產生的,那麼如果函式c中沒有對這個異常進行處理,那麼這個異常會傳遞到函式b中,如果函式b有異常處理那麼就會按照函式b的處理方式進行執行;如果函式b也沒有異常處理,那麼這個異常會繼續傳遞,以此類推。。。如果所有的函式都沒有處理,那麼此時就會進行異常的預設處理,即通常見到的那樣

注意觀察上圖中,當呼叫test3函式時,在test1函式內部產生了異常,此異常被傳遞到test3函式中完成了異常處理,而當異常處理完後,並沒有返回到函式test1中進行執行,而是在函式test3中繼續執行

python異常(概念 捕獲 傳遞 丟擲)

01.異常的概念 程式在執行時,如果python 直譯器遇到到乙個錯誤,會停止程式的執行,並且提示一些錯誤資訊,這就是異常 程式停止執行並且提示錯誤資訊這個動作,我們通常稱之為 丟擲 raise 異常 程式開發時,很難將所有的特殊情況都處理的面面俱到,通過異常捕獲可以針對突發事件做集中的處理,從而保...

python第三十課 異常 異常物件傳遞過程

演示異常物件傳遞的過程 往上 拋 並將其解決def func1 print func1.print 10 0 deffunc2 print func2.try func1 except exception as e print e def func3 print func3.func2 try fu...

python的異常有哪些 Python異常處理

python異常處理 什麼是異常處理?程式在執行過程 現了不可預知的錯誤 並且該錯誤沒有對應的處理機制,那麼就會以異常的形式表現出來 造成的影響就是整個程式無法正常執行 異常的結構 1.異常的型別 nameerror 2.異常的資訊 name abc is not defined 3.異常的位置 t...