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

深入了解Python的異常處理機(jī)制

 更新時間:2021年12月10日 17:24:15   作者:一邊學(xué)習(xí)一邊哭  
這篇文章主要為大家介紹了Python的異常處理機(jī)制,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

什么是異常?

def num(a, b):
    a = int(a)
    b = int(b)
    result = a / b
    print(result)

上面是一個很簡單的除法的函數(shù),語法上沒有任何問題。

但是如果調(diào)用函數(shù)的時候,傳入字符串。則會拋出異常ValueError。且后續(xù)代碼不會執(zhí)行

再比如除數(shù)是0。那也將拋出異常ZeroDivisionError。且后續(xù)代碼不會執(zhí)行

異常處理

格式

try:
    #程序代碼
except [errorNmae]:
    #出現(xiàn)異常后的處理代碼
[else:]
    #當(dāng)try中代碼沒有問題時,會執(zhí)行else。但是try中不能有retrun
[finally:]
    #最后一定會被執(zhí)行的代碼

try-except?

格式一-try...except...

try:
    num('a', 'b')
except:
    print('你的程序出現(xiàn)了大問題?。?!')
print('--------->end')

通過try-except處理異常,當(dāng)捕獲到異常時,將執(zhí)行except部分的代碼。且程序不會終端,繼續(xù)向下執(zhí)行。

格式二-try...except {errorName}...

上述處理異常的時候沒有區(qū)分異常情況。也可以捕獲異常的name,進(jìn)行不同的處理。

try:
    num('a', 'b')
except ValueError:
    print('你的參數(shù)格式寫的不對?。?!')
except ZeroDivisionError:
    print('你的除數(shù)是0!?。?)
print('--------->end')

try:
    num(10, 0)
except ValueError:
    print('你的參數(shù)格式寫的不對?。?!')
except ZeroDivisionError:
    print('你的除數(shù)是0?。?!')
print('--------->end')

格式三-try...except {errorName} as key...

except {errorName} as key。會將報錯的信息賦值給key

注意:Python中的錯誤類型也是class,所有錯誤類型都繼承自BaseException。所以excpt使用時要注意,如果錯誤類型還有子類型,也會將子類型一網(wǎng)打盡。

try:
    num(10, 0)
except ValueError as error_msg_value:
    print('你的參數(shù)格式寫的不對?。?!', error_msg_value)
except ZeroDivisionError as error_msg_zero:
    print('你的除數(shù)是0?。?!', error_msg_zero)
print('--------->end')

這種使用errorName捕獲異常的情況。如果異常沒有被捕獲到,會一直向上拋,最終被python解釋器不過。打印錯誤信息。

try-except-finally

無論是否拋出異常,最后finally都會執(zhí)行。

try:
    num('a', 'b')
except ZeroDivisionError as error_msg_zero:
     print('你的除數(shù)是0?。?!', error_msg_zero)
finally:
    print('無論有沒有異常,finally都會執(zhí)行')
print('--------->end')
 

-------------
輸出:
你的除數(shù)是0?。。?division by zero
無論有沒有異常,finally都會執(zhí)行
--------->end

但是如果異常沒有except沒有捕獲到異常,異常最后由python解釋器拋出。那么finally執(zhí)行完后,后續(xù)的代碼就不會執(zhí)行了。

try:
    num('a', 'b')
# except ValueError as error_msg_value:
#     print('你的參數(shù)格式寫的不對?。?!', error_msg_value)
except ZeroDivisionError as error_msg_zero:
     print('你的除數(shù)是0!?。?, error_msg_zero)
finally:
    print('無論有沒有異常,finally都會執(zhí)行')
print('--------->end')

try-except-else

當(dāng)try中代碼沒有問題時,會執(zhí)行else。但是try中不能有retrun。

try:
    num(10, 2)
except ValueError as error_msg_value:
    print('你的參數(shù)格式寫的不對!??!', error_msg_value)
except ZeroDivisionError as error_msg_zero:
     print('你的除數(shù)是0?。?!', error_msg_zero)
else:
    print('else')
finally:
    print('無論有沒有異常,finally都會執(zhí)行')
print('--------->end')

?---------------
輸出:
5.0
else
無論有沒有異常,finally都會執(zhí)行
--------->end

拋出異常

格式

raise errorName('error message')

錯誤類型名可以自定義,但盡量使用Python內(nèi)置錯誤類型。

def num(a, b):
    result = a / b
    print(result)
    if result < 10:
        raise ValueError('商小于10,不符合預(yù)期。')
 
num(10, 2)

?

raise還可以將一個錯誤類型轉(zhuǎn)換為另一個錯誤類型

def ch_type():
    try:
        result = 10 / 0
    except ZeroDivisionError as err_msg:
        raise Exception(err_msg)
 
ch_type()

原本錯誤類型ZeroDivisionError,改成了Exception。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Pandas讀取excel合并單元格的正確方式(openpyxl合并單元格拆分并填充內(nèi)容)

    Pandas讀取excel合并單元格的正確方式(openpyxl合并單元格拆分并填充內(nèi)容)

    Excel文件中可能包含合并單元格的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Pandas讀取excel合并單元格的正確方式,主要介紹的openpyxl合并單元格拆分并填充內(nèi)容,需要的朋友可以參考下
    2023-06-06
  • python中的十大%占位符對應(yīng)的格式化的使用方法

    python中的十大%占位符對應(yīng)的格式化的使用方法

    本文主要介紹了python中的十大%占位符對應(yīng)的格式化的使用方法,它可以很好的幫助我們解決一些字符串格式化的問題, 文中通過示例代碼介紹的非常詳細(xì),感興趣的小伙伴們可以參考一下
    2022-01-01
  • python神經(jīng)網(wǎng)絡(luò)TensorFlow簡介常用基本操作教程

    python神經(jīng)網(wǎng)絡(luò)TensorFlow簡介常用基本操作教程

    這篇文章主要介紹了python神經(jīng)網(wǎng)絡(luò)入門TensorFlow簡介常用基本操作教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • 判斷Threading.start新線程是否執(zhí)行完畢的實(shí)例

    判斷Threading.start新線程是否執(zhí)行完畢的實(shí)例

    這篇文章主要介紹了判斷Threading.start新線程是否執(zhí)行完畢的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 詳解如何利用Python實(shí)現(xiàn)報表自動化

    詳解如何利用Python實(shí)現(xiàn)報表自動化

    這篇文章主要介紹了報表自動化的流程,并教你用Python實(shí)現(xiàn)工作中的一個報表自動化實(shí)戰(zhàn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • python實(shí)現(xiàn)大文本文件分割成多個小文件

    python實(shí)現(xiàn)大文本文件分割成多個小文件

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)大文本文件分割成多個小文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • python中@contextmanager裝飾器的用法詳解

    python中@contextmanager裝飾器的用法詳解

    這篇文章主要介紹了python中@contextmanager裝飾器的用法詳解,@contextmanager 的作用就是我們可以把一個非自定義類改成一個上下文管理器,需要的朋友可以參考下
    2023-07-07
  • python中反射用法實(shí)例

    python中反射用法實(shí)例

    這篇文章主要介紹了python中反射用法,實(shí)例分析了Python中反射的原理與使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • Python實(shí)現(xiàn)滑塊驗證碼詳解

    Python實(shí)現(xiàn)滑塊驗證碼詳解

    驗證碼作為一種自然人的機(jī)器人的判別工具,被廣泛的用于各種防止程序做自動化的場景中。傳統(tǒng)的字符型驗證安全性已經(jīng)名存實(shí)亡的情況下,各種新型的驗證碼如雨后春筍般涌現(xiàn),今天給大家分享一篇Python實(shí)現(xiàn)滑塊驗證碼
    2022-05-05
  • Scrapy爬蟲文件批量運(yùn)行的實(shí)現(xiàn)

    Scrapy爬蟲文件批量運(yùn)行的實(shí)現(xiàn)

    這篇文章主要介紹了Scrapy爬蟲文件批量運(yùn)行的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09

最新評論