91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python異常傳播怎么處理

發布時間:2022-01-28 09:07:39 來源:億速云 閱讀:163 作者:iii 欄目:開發技術

這篇文章主要講解了“python異常傳播怎么處理”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“python異常傳播怎么處理”吧!

1、異常的傳播

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

異常傳播示例如下:

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

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

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

fn3()

輸出結果:

python異常傳播怎么處理

說明輸出結果:

當我們調用fn3()方法的時候,會先輸出Hello fn3,再向下執行調用fn2()方法,以此類推到fn1()方法中。可以看到上邊有三條輸出語句。

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

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

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

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

print(10 / 0)

輸出結果:

python異常傳播怎么處理

2、如何處理異常

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

異常處理如下:

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

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

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

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

提示:

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

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

如何查看Python異常對象?

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

如下圖所示:

python異常傳播怎么處理

感謝各位的閱讀,以上就是“python異常傳播怎么處理”的內容了,經過本文的學習后,相信大家對python異常傳播怎么處理這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武威市| 沙雅县| 青海省| 益阳市| 仁布县| 千阳县| 饶平县| 凤山市| 元谋县| 诏安县| 汾阳市| 岗巴县| 沽源县| 闽侯县| 绥阳县| 裕民县| 汉源县| 府谷县| 盘锦市| 始兴县| 阜城县| 辉县市| 通江县| 益阳市| 云龙县| 蓬溪县| 华容县| 金山区| 太康县| 虹口区| 岳普湖县| 大英县| 溧水县| 四子王旗| 定结县| 阆中市| 平遥县| 张家界市| 泰来县| 儋州市| 瓦房店市|