亚洲av成人精品日韩一区,97久久久精品综合88久久,玩弄japan白嫩少妇hd,亚洲av片不卡无码久久,玩弄人妻少妇500系列

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

python如何捕獲異常和主動(dòng)拋出異常

python爬蟲知識(shí)分享 ? 來(lái)源:python爬蟲知識(shí)分享 ? 作者:python爬蟲知識(shí)分享 ? 2022-03-04 17:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

python如何主動(dòng)拋出異常和捕獲異常

1. 如何拋出異常?

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

一種是程序自動(dòng)拋出,比如 1/0 會(huì)自動(dòng)拋出 ZeroDivisionError

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

在 Python 中是使用 raise 關(guān)鍵字來(lái)拋出異常的,比如在下面這個(gè)函數(shù)中,如果不存在目標(biāo)文件,則會(huì)拋出一個(gè) Exception 通用異常。

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

2. 如何捕獲異常?

出現(xiàn)錯(cuò)誤或者異常沒(méi)有關(guān)系,關(guān)鍵在于你要學(xué)會(huì)預(yù)判程序可能會(huì)出現(xiàn)的錯(cuò)誤或異常,然后在代碼中捕獲這些異常并處理。

異常的捕獲的語(yǔ)法有如下四種:

第一種語(yǔ)法

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

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

第二種語(yǔ)法

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

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

第三種語(yǔ)法

使用 try ... except ... else

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

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

舉個(gè)例子

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

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

發(fā)生異常的情況

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

第四種語(yǔ)法

使用 try ... except ... finally

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

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

舉個(gè)例子

發(fā)生異常的情況

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

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

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

3. 捕獲多個(gè)異常?

每個(gè)except捕獲一個(gè)異常

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

當(dāng)代碼 A 在運(yùn)行中拋出了異常時(shí),Python 解釋器會(huì)逐行運(yùn)行代碼,如果拋出的異常是 exception1 那么后面直接運(yùn)行代碼B,運(yùn)行完 B 后,就不會(huì)再判斷后面兩個(gè) except 語(yǔ)句了。

而如果不是 exception1 ,而是 exception2 ,那會(huì)運(yùn)行代碼C,而不會(huì)再運(yùn)行第三個(gè) except 語(yǔ)句了。

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

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

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

一個(gè)except捕獲多個(gè)異常

上面的例子可以看出來(lái),第二個(gè)異常和第三個(gè)異常是屬于同一類,就是 計(jì)算錯(cuò)誤,異常處理的代碼是一樣的,那有沒(méi)有辦法將它們合并在一起呢,簡(jiǎn)化一下代碼呢?

答案是,可以的。

在 except 后面其實(shí)是可以接多個(gè)異常的,多個(gè)異常之間使用括號(hào)包裹。只要匹配上一個(gè)就算捕獲到,就會(huì)進(jìn)入相應(yīng)的代碼分支。

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

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

    關(guān)注

    56

    文章

    4827

    瀏覽量

    86710
  • 異常
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    9372
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    機(jī)器學(xué)習(xí)異常檢測(cè)實(shí)戰(zhàn):用Isolation Forest快速構(gòu)建無(wú)標(biāo)簽異常檢測(cè)系統(tǒng)

    本文轉(zhuǎn)自:DeepHubIMBA無(wú)監(jiān)督異常檢測(cè)作為機(jī)器學(xué)習(xí)領(lǐng)域的重要分支,專門用于在缺乏標(biāo)記數(shù)據(jù)的環(huán)境中識(shí)別異常事件。本文深入探討異常檢測(cè)技術(shù)的理論基礎(chǔ)與實(shí)踐應(yīng)用,通過(guò)IsolationForest
    的頭像 發(fā)表于 06-24 11:40 ?630次閱讀
    機(jī)器學(xué)習(xí)<b class='flag-5'>異常</b>檢測(cè)實(shí)戰(zhàn):用Isolation Forest快速構(gòu)建無(wú)標(biāo)簽<b class='flag-5'>異常</b>檢測(cè)系統(tǒng)

    PLC指示燈異常閃爍原因及維修

    PLC(可編程邏輯控制器)作為工業(yè)自動(dòng)化控制的核心設(shè)備,其運(yùn)行狀態(tài)的穩(wěn)定性直接影響生產(chǎn)線的效率與安全。指示燈作為PLC最直觀的狀態(tài)反饋窗口,其異常閃爍往往預(yù)示著潛在故障。本文將系統(tǒng)分析PLC指示燈
    的頭像 發(fā)表于 06-07 16:13 ?1590次閱讀
    PLC指示燈<b class='flag-5'>異常</b>閃爍原因及維修

    泰克示波器高級(jí)觸發(fā)功能捕獲異常信號(hào)的5種方法

    在電子工程領(lǐng)域,示波器是調(diào)試和分析信號(hào)的核心工具,而泰克示波器憑借其強(qiáng)大的高級(jí)觸發(fā)功能,能夠精準(zhǔn)捕獲異常信號(hào),幫助工程師快速定位問(wèn)題。本文將詳細(xì)介紹五種利用泰克示波器高級(jí)觸發(fā)功能捕獲異常
    的頭像 發(fā)表于 05-29 09:38 ?189次閱讀
    泰克示波器高級(jí)觸發(fā)功能<b class='flag-5'>捕獲</b><b class='flag-5'>異常</b>信號(hào)的5種方法

    散熱設(shè)計(jì)與測(cè)試:PCBA異常發(fā)熱的解決之道

    在電子設(shè)備的生產(chǎn)和測(cè)試過(guò)程中,PCBA(印制電路板組裝)異常發(fā)熱是一個(gè)常見且棘手的問(wèn)題。過(guò)高的溫度不僅會(huì)影響設(shè)備的性能,還可能導(dǎo)致元器件損壞甚至設(shè)備報(bào)廢。因此,快速定位發(fā)熱原因并采取有效的解決措施
    的頭像 發(fā)表于 04-10 18:04 ?566次閱讀

    泰克MDO3052示波器波形捕獲率評(píng)測(cè)

    能力,為用戶提供選型參考。 一、波形捕獲率的核心價(jià)值與技術(shù)原理 波形捕獲率是示波器在單位時(shí)間內(nèi)捕獲并處理波形的次數(shù),直接影響異常信號(hào)的捕獲
    的頭像 發(fā)表于 04-02 11:49 ?368次閱讀
    泰克MDO3052示波器波形<b class='flag-5'>捕獲</b>率評(píng)測(cè)

    異常零流量小區(qū)檢測(cè)功能介紹

    隨著5G部署規(guī)模不斷擴(kuò)大,網(wǎng)管KPI的分析需求突增也日益顯著,存在用戶感知問(wèn)題無(wú)法從告警和KPI數(shù)值中直接體現(xiàn)的情況;或者某些小區(qū)存在故障而網(wǎng)絡(luò)維護(hù)工程師無(wú)法及時(shí)監(jiān)控識(shí)別出來(lái)。異常零流量小區(qū),就是指
    的頭像 發(fā)表于 03-22 09:54 ?478次閱讀
    <b class='flag-5'>異常</b>零流量小區(qū)檢測(cè)功能介紹

    PLC異常工作的原因和解決辦法

    PLC(可編程邏輯控制器)異常工作的原因及解決辦法。
    的頭像 發(fā)表于 02-24 17:27 ?1071次閱讀

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

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

    串口通訊異常處理方法 串口設(shè)備連接方式

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

    單片機(jī)異常復(fù)位的原因

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

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

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

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

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

    Panasonic松下焊接電異常處理

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

    嵌入式C編程常用的異常錯(cuò)誤處理

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

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

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