最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中異常的傳播詳解

 更新時間:2022年01月27日 16:26:05   作者:繁華似錦Fighting  
大家好,本篇文章主要講的是python中異常的傳播詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下

1、異常的傳播

當在函數(shù)中出現(xiàn)異常時,如果在函數(shù)中對異常進行了處理,則異常不會再繼續(xù)傳播。如果函數(shù)中沒有對異常進行處理,則異常會繼續(xù)向函數(shù)調(diào)用者傳播。如果函數(shù)調(diào)用者處理了異常,則不再傳播,如果還沒有處理,則繼續(xù)向他的調(diào)用者傳播,直到傳遞到全局作用域(主模塊)如果依然沒有處理,則程序終止,并且顯示異常信息到控制臺。所以異常的傳播我們也稱之為拋出異常。

異常傳播示例如下:

def fn1():
    print('Hello fn')
    print(10/0)

def fn2():
    print('Hello fn2')
    fn()

def fn3():
    print('Hello fn3')
    fn2()

fn3()

輸出結果:

說明輸出結果:

當我們調(diào)用fn3()方法的時候,會先輸出Hello fn3,再向下執(zhí)行調(diào)用fn2()方法,以此類推到fn1()方法中??梢钥吹缴线呌腥龡l輸出語句。

當執(zhí)行到fn1()方法中print(10/0)語句,出現(xiàn)了ZeroDivisionError異常,而fn1()方法中沒有處理該異常,則向他的調(diào)用者拋出這個異常,拋給了fn2()方法,以此類推,知道fn3()方法拋給了全局作用域中的調(diào)用者,異常依然沒有被處理。

最后Python的解釋器會把這個異常顯示在控制臺中。

所以我們看到異常結果中,一行報錯,向上拋了好幾次。

例如:全局作用域中的代碼有異常沒有處理的話,就直接顯示在控制臺中了。

print(10 / 0)

輸出結果:

2、如何處理異常

在異常拋出后的任何一個調(diào)用者處理該異常都可以。

異常處理如下:

def fn1():
    print('Hello fn')
    print(10 / 0)

def fn2():
    print('Hello fn2')
    fn1()

def fn3():
    print('Hello fn3')
    fn2()

try:
    fn3()
except :
    print("異常我已經(jīng)處理過了。")
"""
輸出結果:
Hello fn3
Hello fn2
Hello fn
異常我已經(jīng)處理過了。
"""
# 我在全局作用域的地方進行了異常處理,
# 也可以在其他地方進行處理,不管在哪里處理,
# 最后都不會把錯誤拋向控制臺的。

提示:

當程序運行過程中出現(xiàn)異常以后,所有的異常信息會被保存一個專門的異常對象中。而異常傳播時,實際上就是將異常對象拋給了調(diào)用者。

而不同的錯誤,會對應著不同的異常對象(也就是前邊說的異常類型)。

如何查看Python異常對象?

在Python的本地文檔中,找到[The Python Standard Library] —> [Built-in Exceptions],里面全是我們Python中的異常對象以及說明。

如下圖所示:

到此這篇關于python中異常的傳播詳解的文章就介紹到這了,更多相關python異常傳播內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

定边县| 西宁市| 攀枝花市| 徐闻县| 始兴县| 和硕县| 高阳县| 桂阳县| 循化| 云林县| 黑水县| 兴隆县| 长岛县| 晋州市| 运城市| 洛扎县| 孝感市| 古浪县| 朝阳区| 巢湖市| 庆元县| 桐柏县| 宝山区| 石门县| 贵德县| 大连市| 锦屏县| 江北区| 筠连县| 卓尼县| 淅川县| 葫芦岛市| 青铜峡市| 奎屯市| 玉田县| 建湖县| 吴旗县| 余干县| 隆尧县| 隆昌县| 崇州市|