欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中異常的傳播詳解

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

1、異常的傳播

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

異常傳播示例如下:

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

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

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

fn3()

輸出結果:

說明輸出結果:

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

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

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

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

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

print(10 / 0)

輸出結果:

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異常傳播內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 使用pyecharts在jupyter notebook上繪圖

    使用pyecharts在jupyter notebook上繪圖

    這篇文章主要介紹了使用pyecharts在jupyter notebook上繪圖,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-07-07
  • python列表切片和嵌套列表取值操作詳解

    python列表切片和嵌套列表取值操作詳解

    今天小編就為大家分享一篇python列表切片和嵌套列表取值操作詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • pycharm打開長代碼文件CPU占用率過高的解決

    pycharm打開長代碼文件CPU占用率過高的解決

    這篇文章主要介紹了pycharm打開長代碼文件CPU占用率過高的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • python中什么是面向對象

    python中什么是面向對象

    在本篇文章里小編給大家分享了關于python面向對象的相關基礎知識點,有興趣的朋友們跟著學習下。
    2020-06-06
  • 如何使用Python多線程測試并發(fā)漏洞

    如何使用Python多線程測試并發(fā)漏洞

    這篇文章主要介紹了如何使用Python多線程測試并發(fā)漏洞,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Python的Django框架中if標簽的相關使用

    Python的Django框架中if標簽的相關使用

    這篇文章主要介紹了Python的Django框架中if標簽的相關使用,是Django框架使用中的基礎知識,需要的朋友可以參考下
    2015-07-07
  • Python中str.format()和f-string的使用

    Python中str.format()和f-string的使用

    本文主要介紹了Python中str.format()和f-string的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • python繪制餅圖的方法詳解

    python繪制餅圖的方法詳解

    這篇文章主要為大家詳細介紹了python繪制餅圖的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Python圖像處理之圖片拼接和堆疊案例教程

    Python圖像處理之圖片拼接和堆疊案例教程

    這篇文章主要介紹了Python圖像處理之圖片拼接和堆疊案例教程,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • 新手如何發(fā)布Python項目開源包過程詳解

    新手如何發(fā)布Python項目開源包過程詳解

    這篇文章主要介紹了新手如何發(fā)布Python項目開源包過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07

最新評論