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

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

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

Python中的異常機制(二)

麥辣雞腿堡 ? 來源:python都知道 ? 作者:了不起 ? 2023-05-11 18:20 ? 次閱讀

二、try和except結(jié)構(gòu)

try...一個except結(jié)構(gòu)

這種結(jié)構(gòu)是最常見, 也是最常用的結(jié)構(gòu)

語法結(jié)構(gòu)

try:

被監(jiān)控的可能引發(fā)異常的語句塊

exceptBaseException[ase]:

異常處理語句塊

注意事項:

  • try 塊包含著可能引發(fā)異常的代碼, except 塊則用來捕捉和處理發(fā)生的異常
  • 執(zhí)行的時候,如果 try 塊中沒有引發(fā)異常,則跳過 ecept 塊繼續(xù)執(zhí)行后續(xù)代碼
  • 執(zhí)行的時候,如果 try 塊中發(fā)生了異常,則跳過 try 塊中的后續(xù)代碼,跳到相應(yīng)的 except 塊中處理異常. 異常處理完后,繼續(xù)執(zhí)行后續(xù)代碼

實操代碼

defa():

print("runina()start!")

try:

num=1/0

exceptBaseExceptionase:

print("捕獲異常之后執(zhí)行此處代碼")

print("runina()end!")

defb():

print("runinb()start!")

a()

print("runinb()end!")

defc():

print("runinc()start!")

b()

print("runinc()end!")

print("step1")

c()

print("step2")

try...多個except結(jié)構(gòu)

try...except 的結(jié)構(gòu)可以捕獲所有的異常,工作中也很常見. 但是,一般建議盡量捕獲可能出現(xiàn)的多個異常(按照先子類后父類的順序),并且針對性寫出異常處理代碼 為了避免遺漏可能出現(xiàn)的異常,可以在最后增加 BaseException 。結(jié)構(gòu)如下

語法結(jié)構(gòu)

try:

被監(jiān)控的、可能引發(fā)異常的語句塊

exceptException1:

處理Exception1的語句塊

exceptException2:

處理Exception2的語句塊

[...]

except BaseException:

處理可能遺漏的異常的語句塊

實操代碼

try:

a=input("請輸入被除數(shù):")

b=input("請輸入除數(shù):")

result=float(a)/float(b)

print(result)

exceptZeroDivisionError:

print("異常:0不能做除數(shù)")

exceptValueError:

print("異常:輸入的必須是數(shù)值類型!")

exceptBaseExceptionase:

print(e)

print(type(e))

try...except...else結(jié)構(gòu)

在 try...except...else 結(jié)構(gòu)的基礎(chǔ)上增加了 else 塊 .如果 try 塊中沒有拋出異常,則執(zhí)行else 塊. 如果 try 塊中拋出異常,則執(zhí)行 except 塊,不執(zhí)行 else 塊.

語法結(jié)構(gòu)

try:

被監(jiān)控的可能引發(fā)異常的語句塊

exceptBaseException[ase]:

異常處理語句塊

else:

沒有拋出異常時執(zhí)行的語句塊

實操代碼

try:

a=input("請輸入被除數(shù):")

b=input("請輸入除數(shù):")

result=float(a)/float(b)

exceptBaseExceptionase:

print(e)

else:

print("兩數(shù)相除,結(jié)果是:",result)

try...except...finally結(jié)構(gòu)

try...except...finally 結(jié)構(gòu)中, finally 塊無論是否發(fā)生異常都會被執(zhí)行, 通常用來釋放 try 塊中申請的資源

語法結(jié)構(gòu)

try:

被監(jiān)控的可能引發(fā)異常的語句塊

exceptBaseException[ase]:

異常處理語句塊

finally:

無論是否捕獲異常都會執(zhí)行的語句塊

實操代碼

try:

a=input("請輸入被除數(shù):")

b=input("請輸入除數(shù):")

result=float(a)/float(b)

exceptBaseExceptionase:

print(e)

else:

print("兩數(shù)相除,結(jié)果是:",result)

finally:

print("我是finally中的語句, 無論發(fā)生異常與否, 都執(zhí)行!")

實操代碼2

try:

f=open("d:/a.txt",'r')

content=f.readline()

print(content)

exceptBaseExceptionase:

print(e)

finally:

f.close()#釋放資源. 此處也可能會發(fā)生異常。若發(fā)生異常,則程序終止,不會繼續(xù)往下執(zhí)行

print("step4")

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

    關(guān)注

    117

    文章

    3787

    瀏覽量

    81060
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84694
收藏 人收藏

    評論

    相關(guān)推薦

    FEM模擬python異常

    1148,在genericEmdsCall引發(fā)異常(文本) 以上來自于谷歌翻譯 以下為原文Hello i gotthe following Python error message when
    發(fā)表于 02-14 15:14

    如何使用Python檢測電動機異常情況

    該項目演示如何使用 Python 訓(xùn)練兩種不同的機器學(xué)習(xí)模型來檢測電動機異常情況。 第一個模型依賴于馬哈拉諾比斯距離的經(jīng)典機器學(xué)習(xí)技術(shù)。 第個模型是使用 TensorFlow 和
    發(fā)表于 09-08 08:14

    python常見異常類型

    python常見異常類型在程序運行過程,總會遇到各種各樣的問題和錯誤。有些錯誤是我們編寫代碼時自己造成的,比如語法錯誤、調(diào)用錯誤,甚至邏輯錯誤。下面這個例子,在輸入 if 后輸入回車了,沒有按照
    發(fā)表于 03-04 16:59

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

    關(guān)鍵字拋出。在 Python 是使用 raise 關(guān)鍵字來拋出異常的,比如在下面這個函數(shù),如果不存在目標(biāo)文件,則會拋出一個 Exception 通用
    發(fā)表于 03-04 17:10

    Cortex-M3的異常處理機制分析

    Cortex-M3的異常處理機制分析  詳細闡述CortexM3異常的分類、優(yōu)先級、進入和退出,以及在CortexM3異常處理機制
    發(fā)表于 03-29 15:07 ?2009次閱讀
    Cortex-M3的<b class='flag-5'>異常</b>處理<b class='flag-5'>機制</b>分析

    C++異常機制探討

    C++的異常機制為我們提供了更好的解決方法。異常處理的基本思想是:當(dāng)出現(xiàn)錯誤時拋出一個異常,希望它的調(diào)用者能捕獲并處理這個異常。
    發(fā)表于 11-23 11:04 ?3476次閱讀
    C++<b class='flag-5'>異常</b><b class='flag-5'>機制</b>探討

    基于Python 異常的介紹以及異常處理的方法解析

    異常處理在任何一門編程語言里都是值得關(guān)注的一個話題,良好的異常處理可以讓你的程序更加健壯,清晰的錯誤信息更能幫助你快速修復(fù)問題。在Python,和不分高級語言一樣,使用了try/ex
    的頭像 發(fā)表于 01-31 14:20 ?6276次閱讀
    基于<b class='flag-5'>Python</b> <b class='flag-5'>異常</b>的介紹以及<b class='flag-5'>異常</b>處理的方法解析

    Java異常處理機制

    的負擔(dān))。 如果自己能處理的意外情況,盡量就地處理掉,別傳播出去,增加客戶端程序員的負擔(dān)。如果非得傳播出去,可以考慮在方法的聲明中用throws關(guān)鍵字傳播運行時異常。 不要隨便自己定義異常,如果在Java的基本類庫找不到合適的
    發(fā)表于 03-26 11:44 ?6次下載

    基于Greenshield模型的異常節(jié)點檢測機制

    自身無線通信設(shè)備計算的車流量和接收到的其他車輛計算的車流量的差異,初步定位可能的異常節(jié)點位置。采用假設(shè)檢驗的u檢驗方法決定是否接受接收到的數(shù)據(jù),據(jù)此推斷節(jié)點是否異常。仿真結(jié)果表明,采用該機制
    發(fā)表于 03-29 09:54 ?0次下載

    Python中有哪些常見的錯誤和異常

    python常見異常類型 在程序運行過程,總會遇到各種各樣的問題和錯誤。 有些錯誤是我們編寫代碼時自己造成的,比如語法錯誤、調(diào)用錯誤,甚至邏輯錯誤。下面這個例子,在輸入 if 后輸入回車了,沒有
    的頭像 發(fā)表于 03-04 16:58 ?4169次閱讀

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

    ,使用 raise 關(guān)鍵字拋出。 在 Python 是使用 raise 關(guān)鍵字來拋出異常的,比如在下面這個函數(shù),如果不存在目標(biāo)文件,則會拋出一個 Exception 通用
    的頭像 發(fā)表于 03-04 17:09 ?9843次閱讀

    Python-模塊、包、異常

    * 程序運行時,如果Python 解釋器遇到了錯誤,會停止程序運行,并且提示錯誤信息,**這就是異常**,* 程序停止執(zhí)行并提示錯誤信息的動作,稱為 **拋出異常**
    的頭像 發(fā)表于 02-16 15:40 ?714次閱讀
    <b class='flag-5'>Python</b>-模塊、包、<b class='flag-5'>異常</b>

    C++程序異常處理機制是什么

    那么C++設(shè)計了一套異常處理機制,一方面能夠使得異常處理和正常運行代碼進行分離,使得程序更加模塊化;另一方面,C++的異常處理可以不需要異常
    的頭像 發(fā)表于 02-21 10:37 ?869次閱讀
    C++程序<b class='flag-5'>異常</b>處理<b class='flag-5'>機制</b>是什么

    Python異常機制(一)

    一刻不在路上. 在今夜首先了解 什么是異常 : 軟件程序在運行過程,可能會遇到能使其不能正常運行的問題,我們稱之為異常,英文是:Exception . 然后, 我們會了解 捕獲異常
    的頭像 發(fā)表于 05-11 18:17 ?755次閱讀
    <b class='flag-5'>Python</b><b class='flag-5'>中</b>的<b class='flag-5'>異常</b><b class='flag-5'>機制</b>(一)

    arm異常響應(yīng)和異常返回機制是什么樣子的?

    arm異常響應(yīng)和異常返回機制是什么樣子的?? ARM是一種RISC指令集架構(gòu),廣泛用于無線電視、移動電話、嵌入式系統(tǒng)等領(lǐng)域。ARM異常響應(yīng)
    的頭像 發(fā)表于 10-19 16:36 ?1037次閱讀