在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

python如何捕獲異常和主動拋出異常

python爬蟲知識分享 ? 來源:python爬蟲知識分享 ? 作者:python爬蟲知識分享 ? 2022-03-04 17:09 ? 次閱讀

python如何主動拋出異常和捕獲異常

1. 如何拋出異常?

異常的產(chǎn)生有兩種來源:

一種是程序自動拋出,比如 1/0 會自動拋出 ZeroDivisionError

一種是開發(fā)者主動拋出,使用 raise 關鍵字拋出。

在 Python 中是使用 raise 關鍵字來拋出異常的,比如在下面這個函數(shù)中,如果不存在目標文件,則會拋出一個 Exception 通用異常。

def demo_func(filename):
    if not os.path.isfile(filename):
        raise Exception

2. 如何捕獲異常?

出現(xiàn)錯誤或者異常沒有關系,關鍵在于你要學會預判程序可能會出現(xiàn)的錯誤或異常,然后在代碼中捕獲這些異常并處理。

異常的捕獲的語法有如下四種:

第一種語法

只捕捉但是不想獲取異常信息

try:
    代碼A
except [EXCEPTION]:
    代碼B

第二種語法

不但捕捉了還要獲取異常信息,賦值給 e 后,后面你可以把異常信息打印到日志中。

try:
    代碼A
except [EXCEPTION] as e:
    代碼B

第三種語法

使用 try ... except ... else

如果代碼A發(fā)生了異常,則會走到代碼B的邏輯,如果沒有發(fā)生異常,則會走到代碼C

try:
    代碼A
except [exception] as e:
    代碼B
else:
    代碼C

舉個例子

不發(fā)生異常的情況

>>> try:
...     4/2
... except ZeroDivisionError as e:
...     print("發(fā)生了異常:錯誤信息如下: \n" + str(e))
... else:
...     print("程序正常運行")
...
2
程序正常運行

發(fā)生異常的情況

>>> try:
...     1/0
... except ZeroDivisionError as e:
...     print("發(fā)生了異常:錯誤信息如下: \n" + str(e))
... else:
...     print("程序正常運行")
...
發(fā)生了異常:錯誤信息如下:
integer division or modulo by zero

第四種語法

使用 try ... except ... finally

如果代碼A發(fā)生了異常,則會走到代碼B的邏輯,最后不管有沒有發(fā)生異常都會走到代碼C

try: 代碼A except [exception] as e: 代碼B finally: 代碼C

舉個例子

發(fā)生異常的情況

>>> try:
...     1/0
... except ZeroDivisionError as e:
...     print("發(fā)生了異常:錯誤信息如下: \n" + str(e))
... finally:
...     print("程序運行結束!!")
...
發(fā)生了異常:錯誤信息如下:
integer division or modulo by zero
程序運行結束!!

不發(fā)生異常的情況

>>> try:
...     4/2
... except ZeroDivisionError as e:
...     print("發(fā)生了異常:錯誤信息如下: \n" + str(e))
... finally:
...     print("程序運行結束!!")
...
2
程序運行結束!!

3. 捕獲多個異常?

每個except捕獲一個異常

一個 try 語句可能有多個 except 子句,以指定不同異常的處理程序,但是最多會執(zhí)行一個處理程序。

當代碼 A 在運行中拋出了異常時,Python 解釋器會逐行運行代碼,如果拋出的異常是 exception1 那么后面直接運行代碼B,運行完 B 后,就不會再判斷后面兩個 except 語句了。

而如果不是 exception1 ,而是 exception2 ,那會運行代碼C,而不會再運行第三個 except 語句了。

try:
    代碼A
except [exception1] as e:
    代碼B
except [exception2] as e:
    代碼C
except [exception3] as e:
    代碼D

舉個例子吧,下面這段代碼,由于 1/0 會拋出 ZeroDivisionError 錯誤,所以前面兩個異常匹配都不成功,而在最后一個 except 成功匹配上,最終打印出 除數(shù)不能為 0

try:
    1/0
except IOError:
    print("IO讀寫出錯")
except FloatingPointError:
    # 浮點計算錯誤
    print("計算錯誤")
except ZeroDivisionError:
    # 除數(shù)不能為 0
    print("計算錯誤")
# output: 計算錯誤

一個except捕獲多個異常

上面的例子可以看出來,第二個異常和第三個異常是屬于同一類,就是 計算錯誤,異常處理的代碼是一樣的,那有沒有辦法將它們合并在一起呢,簡化一下代碼呢?

答案是,可以的。

在 except 后面其實是可以接多個異常的,多個異常之間使用括號包裹。只要匹配上一個就算捕獲到,就會進入相應的代碼分支。

try:
    1/0
except IOError:
    print("IO讀寫出錯")
except (ZeroDivisionError, FloatingPointError):
    print("計算出錯")
# output: 計算錯誤

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • python
    +關注

    關注

    56

    文章

    4809

    瀏覽量

    85071
  • 異常
    +關注

    關注

    0

    文章

    23

    瀏覽量

    9270
收藏 人收藏

    評論

    相關推薦

    電路異常現(xiàn)象及解決

    1 電路異常現(xiàn)象 這是面包板論壇看到的一則帖子,帖主的問題主要是使用一個網(wǎng)上借鑒的光耦串口隔離電路,結果實際調試發(fā)現(xiàn)根本通訊不上: ? 您是否已經(jīng)看到這個問題發(fā)生的原因了? ? 2 問題原因
    的頭像 發(fā)表于 02-07 10:10 ?54次閱讀
    電路<b class='flag-5'>異常</b>現(xiàn)象及解決

    SMT貼片空焊異常

    SMT廠使用我們同款產(chǎn)品在三種不同機種上皆出現(xiàn)空焊現(xiàn)象,我們對不良品進行EDX分析,無異常;對同批次樣品上錫實驗無異常;量測產(chǎn)品尺寸(產(chǎn)品高度、焊盤大小、鍍層厚度)無異常,可能是什么原因導致的空焊呢?
    發(fā)表于 01-08 11:50

    串口通訊異常處理方法 串口設備連接方式

    串口通信異常處理方法 1. 異常檢測 在串口通信中,首先需要能夠檢測到異常情況。異常檢測可以通過以下幾種方式實現(xiàn): 硬件檢測 :利用串口硬件的中斷和狀態(tài)寄存器來檢測
    的頭像 發(fā)表于 12-27 09:53 ?800次閱讀

    單片機異常復位的原因

    單片機異常復位是指單片機在正常工作過程中,非預期地返回到初始狀態(tài)或重啟。這種異常復位現(xiàn)象可能由多種因素引起,以下是對單片機異常復位原因的詳細分析:
    的頭像 發(fā)表于 10-17 17:56 ?1460次閱讀

    令人頭疼的異常重啟,竟然是KV的鍋…

    合宙模組異常重啟原因排查
    的頭像 發(fā)表于 09-26 18:14 ?512次閱讀
    令人頭疼的<b class='flag-5'>異常</b>重啟,竟然是KV的鍋…

    儀表溫度異常的產(chǎn)生原因

    電子發(fā)燒友網(wǎng)站提供《儀表溫度異常的產(chǎn)生原因.docx》資料免費下載
    發(fā)表于 09-12 14:09 ?0次下載

    Panasonic松下焊接電異常處理

    電子發(fā)燒友網(wǎng)站提供《Panasonic松下焊接電異常處理.pdf》資料免費下載
    發(fā)表于 08-19 14:24 ?0次下載

    嵌入式C編程常用的異常錯誤處理

    嵌入式C編程中,異常錯誤處理是確保系統(tǒng)穩(wěn)定性和可靠性的重要部分。以下是一些常見的異常錯誤處理方法及其詳細說明和示例: 1. 斷言 (Assertions) 斷言用于在開發(fā)階段捕獲程序中的邏輯錯誤
    發(fā)表于 08-06 14:32

    三菱異常停止plc怎么解決

    三菱電機(Mitsubishi Electric)是一家知名的日本企業(yè),其生產(chǎn)的PLC(可編程邏輯控制器)廣泛應用于工業(yè)自動化領域。然而,在使用過程中,PLC可能會出現(xiàn)異常停止的情況。 一、三菱
    的頭像 發(fā)表于 07-25 10:13 ?2509次閱讀

    ESP8266使用mDNS后,ESP會拋出異常怎么解決?

    我在 OTA 實驗中注意到了它。使用 mDNS 后,ESP 會拋出異常 (0)。它每分鐘正好執(zhí)行此操作 1 次。無論WN523N2是在橋接模式還是中繼器模式下運行,都沒有區(qū)別。該錯誤僅發(fā)生
    發(fā)表于 07-18 07:27

    一站式統(tǒng)一返回值封裝、異常處理、異常錯誤碼解決方案—最強的Sping Boot接口優(yōu)雅響應處理器

    1. 前言 統(tǒng)一返回值封裝、統(tǒng)一異常處理和異常錯誤碼體系的意義在于提高代碼的可維護性和可讀性,使得代碼更加健壯和穩(wěn)定。統(tǒng)一返回值封裝可以避免每一個接口都需要手工拼裝響應報文;統(tǒng)一異常處理可以將
    的頭像 發(fā)表于 06-20 15:42 ?656次閱讀

    叉車can總線異常怎么解決

    ,被廣泛應用于叉車控制系統(tǒng)中,實現(xiàn)了叉車各控制單元之間的高速、可靠通信。然而,在實際使用過程中,叉車CAN總線可能會出現(xiàn)各種異常情況,影響叉車的正常使用。 叉車CAN總線異常的原因 叉車CAN總線異常的原因很多,主要包括以下幾
    的頭像 發(fā)表于 06-16 10:56 ?2131次閱讀

    差分探頭測量電壓尖峰異常問題的分析與解決

    在電子測量領域中,差分探頭是一種常用的儀器,用于測量電路中的差分信號,特別是在高速電路和高頻信號的測量中起著重要作用。然而,有時候在測量過程中可能會出現(xiàn)電壓尖峰異常的情況,這可能會導致誤解和不準
    的頭像 發(fā)表于 06-13 09:35 ?623次閱讀
    差分探頭測量電壓尖峰<b class='flag-5'>異常</b>問題的分析與解決

    工業(yè)異常檢測超越特定閾值限制的解決方案

    異常檢測和分割(AD&S)對于工業(yè)質量控制至關重要。雖然現(xiàn)有方法在為每個像素生成異常分數(shù)方面表現(xiàn)出色,但實際應用需要產(chǎn)生一個二進制分割來識別異常
    發(fā)表于 04-09 10:44 ?653次閱讀
    工業(yè)<b class='flag-5'>異常</b>檢測超越特定閾值限制的解決方案

    熔纖機放電異常怎么處理

    熔纖機是一種用于制備人造纖維的專用設備,它在行業(yè)中起著至關重要的作用。然而,由于長時間的使用和操作不當?shù)仍颍劾w機可能會出現(xiàn)放電異常的情況。放電異常不僅影響設備的正常工作,還有可能對操作人員的安全
    的頭像 發(fā)表于 04-08 16:13 ?1450次閱讀
    主站蜘蛛池模板: 毛片在线播放网站 | 久久国产精品免费观看 | 诱人的老师bd高清日本在线观看 | 天天操国产| 午夜湿影院 | 2017天天干夜夜操 | 91日本视频 | 波多野结衣在线视频观看 | 亚洲国产精品综合久久久 | 欧美亚洲h在线一区二区 | 国产99在线播放免费 | 亚洲bbb | 国产欧美在线一区二区三区 | 黄色成人毛片 | 伊人涩 | 成人影院免费观看 | 中文字幕一区二区三区精品 | 熟妇毛片 | 欧美激情亚洲精品日韩1区2区 | 18欧美乱大交 | 影院成人区精品一区二区婷婷丽春院影视 | 日本在线观看一区 | 九九99视频在线观看视频观看 | 奇米影视亚洲春色77777 | 高清视频在线播放 | 一卡二卡四卡无卡乱免费网页 | 丁香六月在线观看 | 免费抓胸吻胸激烈视频网站 | 国产色播 | 在线观看中文字幕第一页 | 男男np主受高h啪啪肉 | 成人欧美精品久久久久影院 | 天堂在线www网亚洲 天堂在线观看 | 欧美人成绝费网站色www吃脚 | 在线女同免费观看网站 | 国产精品午夜剧场 | 午夜免费理论片在线看 | 女人又色又爽又黄 | 中文字幕一区二区三区5566 | 高清国产在线 | 色停停 |