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

Python異常處理機(jī)制結(jié)構(gòu)實(shí)例解析

 更新時(shí)間:2020年07月23日 15:37:42   作者:bashliuhe  
這篇文章主要介紹了Python異常處理機(jī)制結(jié)構(gòu)實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

首先,Python 完整的異常處理語(yǔ)法結(jié)構(gòu)如下:

try:
  #業(yè)務(wù)實(shí)現(xiàn)代碼
except Exception1 as e:
  #異常處理塊1
  ...
except Exception2 as e:
  #異常處理塊2
  ...
#可以有多個(gè) except
...
else:
  #正常處理塊
finally :
  #資源回收塊
  ...

整個(gè)異常處理結(jié)構(gòu)的執(zhí)行過(guò)程,如圖 1 所示。

注意,在整個(gè)異常處理結(jié)構(gòu)中,只有 try 塊是必需的,也就是說(shuō):

  • 如果沒(méi)有 try 塊,則不能有后面的 except 塊、else 塊和 finally 塊。但是也不能只使用 try 塊,要么使用 try except 結(jié)構(gòu),要么使用 try finally 結(jié)構(gòu);
  • except 塊、else 塊、finally 塊都是可選的,當(dāng)然也可以同時(shí)出現(xiàn);
  • 可以有多個(gè) except 塊,但捕獲父類異常的 except 塊應(yīng)該位于捕獲子類異常的 except 塊的后面;
  • 多個(gè) except 塊必須位于 try 塊之后,finally 塊必須位于所有的 except 塊之后。
  • 要使用 else 塊,其前面必須包含 try 和 except。

其中,很多初學(xué)者分不清 finally 和 else 的區(qū)別,這里著重說(shuō)一下。else 語(yǔ)句塊只有在沒(méi)有異常發(fā)生的情況下才會(huì)執(zhí)行,而 finally 語(yǔ)句則不管異常是否發(fā)生都會(huì)執(zhí)行。不僅如此,無(wú)論是正常退出、遇到異常退出,還是通過(guò) break、continue、return 語(yǔ)句退出,finally 語(yǔ)句塊都會(huì)執(zhí)行。

注意,如果程序中運(yùn)行了強(qiáng)制退出 Python 解釋器的語(yǔ)句(如 os._exit(1) ),則 finally 語(yǔ)句將無(wú)法得到執(zhí)行。例如:

import os
try:
  os._exit(1)
finally:
  print("執(zhí)行finally語(yǔ)句")

運(yùn)行程序,沒(méi)有任何輸出。因此,除非在 try 塊、except 塊中調(diào)用了退出 Python 解釋器的方法,否則不管在 try 塊、except 塊中執(zhí)行怎樣的代碼,出現(xiàn)怎樣的情況,異常處理的 finally 塊總會(huì)被執(zhí)行。

另外在通常情況下,不要在 finally 塊中使用如 return 或 raise 等導(dǎo)致方法中止的語(yǔ)句(raise 語(yǔ)句將在后面介紹),一旦在 finally 塊中使用了 return 或 raise 語(yǔ)句,將會(huì)導(dǎo)致 try 塊、except 塊中的 return、raise 語(yǔ)句失效。看如下程序:

def test():
  try:
    # 因?yàn)閒inally塊中包含了return語(yǔ)句
    # 所以下面的return語(yǔ)句失去作用
    return True
  finally:
    return False
print(test())

上面程序在 finally 塊中定義了一條 return False 語(yǔ)句,這將導(dǎo)致 try 塊中的 return true 失去作用。運(yùn)行上面程序,輸出結(jié)果為:

False

同樣,如果 Python 程序在執(zhí)行 try 塊、except 塊包含有 return 或 raise 語(yǔ)句,則 Python 解釋器執(zhí)行到該語(yǔ)句時(shí),會(huì)先去查找 finally 塊,如果沒(méi)有 finally 塊,程序才會(huì)立即執(zhí)行 return 或 raise 語(yǔ)句;反之,如果找到 finally 塊,系統(tǒng)立即開(kāi)始執(zhí)行 finally 塊,只有當(dāng) finally 塊執(zhí)行完成后,系統(tǒng)才會(huì)再次跳回來(lái)執(zhí)行 try 塊、except 塊里的 return 或 raise 語(yǔ)句。

但是,如果在 finally 塊里也使用了 return 或 raise 等導(dǎo)致方法中止的語(yǔ)句,finally 塊己經(jīng)中止了方法,系統(tǒng)將不會(huì)跳回去執(zhí)行 try 塊、except 塊里的任何代碼。

盡量避免在 finally 塊里使用 return 或 raise 等導(dǎo)致方法中止的語(yǔ)句,否則可能出現(xiàn)一些很奇怪的情況。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python MySQL查詢限制方式詳解

    Python MySQL查詢限制方式詳解

    MySQL是一款廣泛使用的關(guān)系型數(shù)據(jù)庫(kù),而Python是一門流行的編程語(yǔ)言,在進(jìn)行數(shù)據(jù)庫(kù)操作時(shí),二者的結(jié)合可以幫助我們更加高效地進(jìn)行操作和管理,這篇文章主要介紹了Python MySQL查詢限制,需要的朋友可以參考下
    2023-11-11
  • Python基于Matplotlib庫(kù)簡(jiǎn)單繪制折線圖的方法示例

    Python基于Matplotlib庫(kù)簡(jiǎn)單繪制折線圖的方法示例

    這篇文章主要介紹了Python基于Matplotlib庫(kù)簡(jiǎn)單繪制折線圖的方法,涉及Python Matplotlib庫(kù)的相關(guān)使用技巧,需要的朋友可以參考下
    2017-08-08
  • 詳解pandas獲取Dataframe元素值的幾種方法

    詳解pandas獲取Dataframe元素值的幾種方法

    這篇文章主要介紹了詳解pandas獲取Dataframe元素值的幾種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Python預(yù)測(cè)2020高考分?jǐn)?shù)和錄取情況

    Python預(yù)測(cè)2020高考分?jǐn)?shù)和錄取情況

    這篇文章主要介紹了Python預(yù)測(cè)2020高考分?jǐn)?shù)和錄取情況可能是這樣,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Python應(yīng)用開(kāi)發(fā)之實(shí)現(xiàn)串口通信

    Python應(yīng)用開(kāi)發(fā)之實(shí)現(xiàn)串口通信

    在嵌入式開(kāi)發(fā)中我們經(jīng)常會(huì)用到串口,串口通信簡(jiǎn)單,使用起來(lái)方便,且適用場(chǎng)景多。本文為大家準(zhǔn)備了Python實(shí)現(xiàn)串口通信的示例代碼,需要的可以參考一下
    2022-11-11
  • pycharm調(diào)試功能如何實(shí)現(xiàn)跳到循環(huán)的某一步

    pycharm調(diào)試功能如何實(shí)現(xiàn)跳到循環(huán)的某一步

    這篇文章主要介紹了pycharm調(diào)試功能如何實(shí)現(xiàn)跳到循環(huán)的某一步問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python 自動(dòng)監(jiān)控最新郵件并讀取的操作

    python 自動(dòng)監(jiān)控最新郵件并讀取的操作

    這篇文章主要介紹了python 自動(dòng)監(jiān)控最新郵件并讀取的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • Python部署web開(kāi)發(fā)程序的幾種方法

    Python部署web開(kāi)發(fā)程序的幾種方法

    本篇文章主要介紹了Python部署web開(kāi)發(fā)程序的幾種方法,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-05-05
  • 運(yùn)行python腳本更改Windows背景

    運(yùn)行python腳本更改Windows背景

    這篇文章主要介紹了運(yùn)行python腳本更改Windows背景,使用常用的命令更改桌面背景,以更改ctype中的系統(tǒng)參數(shù),下面來(lái)看看具體得更改過(guò)程吧
    2022-01-01
  • 詳解python發(fā)送各類郵件的主要方法

    詳解python發(fā)送各類郵件的主要方法

    python中email模塊使得處理郵件變得比較簡(jiǎn)單,這篇文章主要介紹了詳解python發(fā)送各類郵件的主要方法,有興趣的可以了解一下。
    2016-12-12

最新評(píng)論