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

Python try except else使用詳解

 更新時(shí)間:2021年01月12日 10:32:30   作者:aaron_agu  
這篇文章主要介紹了Python try except else使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在原本的try except結(jié)構(gòu)的基礎(chǔ)上,Python 異常處理機(jī)制還提供了一個(gè) else 塊,也就是原有 try except 語(yǔ)句的基礎(chǔ)上再添加一個(gè) else 塊,即try except else結(jié)構(gòu)。

使用 else 包裹的代碼,只有當(dāng) try 塊沒(méi)有捕獲到任何異常時(shí),才會(huì)得到執(zhí)行;反之,如果 try 塊捕獲到異常,即便調(diào)用對(duì)應(yīng)的 except 處理完異常,else 塊中的代碼也不會(huì)得到執(zhí)行。

舉個(gè)例子:

try:
  result = 20 / int(input('請(qǐng)輸入除數(shù):'))
  print(result)
except ValueError:
  print('必須輸入整數(shù)')
except ArithmeticError:
  print('算術(shù)錯(cuò)誤,除數(shù)不能為 0')
else:
  print('沒(méi)有出現(xiàn)異常')
print("繼續(xù)執(zhí)行")

可以看到,在原有 try except 的基礎(chǔ)上,我們?yōu)槠涮砑恿?else 塊?,F(xiàn)在執(zhí)行該程序:
請(qǐng)輸入除數(shù):4
5.0
沒(méi)有出現(xiàn)異常
繼續(xù)執(zhí)行

如上所示,當(dāng)我們輸入正確的數(shù)據(jù)時(shí),try 塊中的程序正常執(zhí)行,Python 解釋器執(zhí)行完 try 塊中的程序之后,會(huì)繼續(xù)執(zhí)行 else 塊中的程序,繼而執(zhí)行后續(xù)的程序。

讀者可能會(huì)問(wèn),既然 Python 解釋器按照順序執(zhí)行代碼,那么 else 塊有什么存在的必要呢?直接將 else 塊中的代碼編寫在 try except 塊的后面,不是一樣嗎?

當(dāng)然不一樣,現(xiàn)在再次執(zhí)行上面的代碼:
請(qǐng)輸入除數(shù):a
必須輸入整數(shù)
繼續(xù)執(zhí)行

可以看到,當(dāng)我們?cè)噲D進(jìn)行非法輸入時(shí),程序會(huì)發(fā)生異常并被 try 捕獲,Python 解釋器會(huì)調(diào)用相應(yīng)的 except 塊處理該異常。但是異常處理完畢之后,Python 解釋器并沒(méi)有接著執(zhí)行 else 塊中的代碼,而是跳過(guò) else,去執(zhí)行后續(xù)的代碼。

也就是說(shuō),else 的功能,只有當(dāng) try 塊捕獲到異常時(shí)才能顯現(xiàn)出來(lái)。在這種情況下,else 塊中的代碼不會(huì)得到執(zhí)行的機(jī)會(huì)。而如果我們直接把 else 塊去掉,將其中的代碼編寫到 try except 的后面:

try:
  result = 20 / int(input('請(qǐng)輸入除數(shù):'))
  print(result)
except ValueError:
  print('必須輸入整數(shù)')
except ArithmeticError:
  print('算術(shù)錯(cuò)誤,除數(shù)不能為 0')
print('沒(méi)有出現(xiàn)異常')
print("繼續(xù)執(zhí)行")

程序執(zhí)行結(jié)果為:
請(qǐng)輸入除數(shù):a
必須輸入整數(shù)
沒(méi)有出現(xiàn)異常
繼續(xù)執(zhí)行

可以看到,如果不使用 else 塊,try 塊捕獲到異常并通過(guò) except 成功處理,后續(xù)所有程序都會(huì)依次被執(zhí)行。

python  try except else finally 實(shí)例

class AError(Exception):
  """AError---exception"""
  print('AError')

class BError(Exception):
  """BError---exception"""
  print('BError')

try:
  # raise AError
  # raise BError
  aaaaa()
except AError:
  print("Get AError")
except BError:
  print("Get BError")
except:
  print("Get Exception")
else:
  print("do else")
finally:
  print("finally")

1.在上面所示的完整語(yǔ)句中try/except/else/finally所出現(xiàn)的順序必須是try-->except X-->except-->else-->finally,即所有的except必須在else和finally之前,else(如果有的話)必須在finally之前,而except X必須在except之前。否則會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤。

2.在上面的完整語(yǔ)句中,else語(yǔ)句的存在必須以except X或者except語(yǔ)句為前提,如果在沒(méi)有except語(yǔ)句的try block中使用else語(yǔ)句會(huì)引發(fā)語(yǔ)法錯(cuò)誤。也就是說(shuō)else不能與try/finally配合使用。

3.try成功進(jìn)else,不成功進(jìn)對(duì)應(yīng)的except;

4.不論是否成功except X,except的判定語(yǔ)句都會(huì)執(zhí)行,只是不進(jìn)入;對(duì)應(yīng)到以上程序就是不論哪種情況 AError BError都會(huì)打印,但是Get AError Get BError 只有拋對(duì)應(yīng)的異常時(shí)才會(huì)打印。

5.finally所有情況都會(huì)執(zhí)行,可以不寫,寫了就必須在所有except else等之后;

到此這篇關(guān)于Python try except else使用詳解的文章就介紹到這了,更多相關(guān)Python try except else內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • 關(guān)于pytorch求導(dǎo)總結(jié)(torch.autograd)

    關(guān)于pytorch求導(dǎo)總結(jié)(torch.autograd)

    這篇文章主要介紹了關(guān)于pytorch求導(dǎo)總結(jié)(torch.autograd),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • python實(shí)現(xiàn)A*尋路算法

    python實(shí)現(xiàn)A*尋路算法

    A*算法可以顯示尋路圖,兩點(diǎn)之間尋找最短路徑,本文使用Python實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Pytest框架 conftest.py文件的使用詳解

    Pytest框架 conftest.py文件的使用詳解

    conftest.py是pytest特有的本地測(cè)試配置文件,既可以用來(lái)設(shè)置項(xiàng)目級(jí)別的fixture,也可以用來(lái)導(dǎo)入外部插件,本文給大家介紹Pytest框架 conftest.py文件的使用,感興趣的朋友一起看看吧
    2022-06-06
  • Python性能測(cè)試工具Locust安裝及使用

    Python性能測(cè)試工具Locust安裝及使用

    這篇文章主要介紹了Python性能測(cè)試工具Locust安裝及使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Python標(biāo)準(zhǔn)模塊--ContextManager上下文管理器的具體用法

    Python標(biāo)準(zhǔn)模塊--ContextManager上下文管理器的具體用法

    本篇文章主要介紹了Python標(biāo)準(zhǔn)模塊--ContextManager的具體用法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • Python初識(shí)二叉樹(shù)續(xù)之實(shí)戰(zhàn)binarytree

    Python初識(shí)二叉樹(shù)續(xù)之實(shí)戰(zhàn)binarytree

    binarytree庫(kù)是一個(gè)Python的第三方庫(kù),這個(gè)庫(kù)實(shí)現(xiàn)了一些二叉樹(shù)相關(guān)的常用方法,使用二叉樹(shù)時(shí),可以直接調(diào)用,不需要再自己實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于Python初識(shí)二叉樹(shù)之實(shí)戰(zhàn)binarytree的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • 詳解python架構(gòu)?PyNeuraLogic超越Transformers

    詳解python架構(gòu)?PyNeuraLogic超越Transformers

    這篇文章主要為大家介紹了python使用?PyNeuraLogic超越Transformers示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • pandas 數(shù)據(jù)類型轉(zhuǎn)換的實(shí)現(xiàn)

    pandas 數(shù)據(jù)類型轉(zhuǎn)換的實(shí)現(xiàn)

    這篇文章主要介紹了pandas 數(shù)據(jù)類型轉(zhuǎn)換的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Python實(shí)現(xiàn)求笛卡爾乘積的方法

    Python實(shí)現(xiàn)求笛卡爾乘積的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)求笛卡爾乘積的方法,結(jié)合實(shí)例形式分析了Python計(jì)算笛卡爾乘積的原理與實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-09-09
  • Python 一鍵制作微信好友圖片墻的方法

    Python 一鍵制作微信好友圖片墻的方法

    這篇文章主要介紹了Python 一鍵制作微信好友圖片墻的方法,有兩種方法,每種方法給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05

最新評(píng)論