python學習筆記(9): try...except 異常捕獲

2021-12-28 測試開發實戰課

大家好,我是迷龍。
目前正在學習python基礎,同時也在leetcode-cn上刷算法題目,有興趣的同學一起哦。

最近學習了python如何處理異常,發現一篇比較好的文章,整理了一下,供大家學習研究。

一、什麼是異常?

當無法正確處理程序時就會出現異常。當異常發生時我們需要捕獲處理它,否則程序會終止執行。

二、基礎語法

捕捉異常可以使用tryexcept語句。

如果你不想在異常發生時結束你的程序,只需在try裡捕獲它。

try:
    檢測異常代碼段
except:
    發生異常後執行代碼段
else:
    未發生異常執行代碼段
finally:
    最終執行代碼段

三、基本原理

四、具體示例

例子一:

try:
    s = input("請輸入內容:")
    if s is None:
        print ("s 是空對象")
    print(len(s))  #這句拋出異常
except TypeError:
    print("類型錯誤,空對象沒有長度")
else:
    print("沒有問題,正常執行!")
finally:
    print('不管怎樣,我都會執行')

例子二:

當在try塊中拋出一個異常,立即執行finally塊代碼。

try:
    s = None
    if s is None:
        print ("s 是空對象")
    print(len(s))  #這句拋出異常
except TypeError:
    print("類型錯誤,空對象沒有長度")
else:
    print("沒有問題,正常執行!")
finally:
    print('不管怎樣,我都會執行')

五、捕獲異常的操作

1. 使用except而帶多種異常類型

有多個expect的時候會首先執行第一個能被捕獲到的異常並且只執行一個。

try:
    正常的操作
except(Exception1[, Exception2[,...ExceptionN]]]):
   發生以上多個異常中的一個,執行這塊代碼
else:
    如果沒有異常執行這塊代碼

2.使用多層try的時候except的傳遞

多重異常的處理,可以在try語句中嵌套另一個try語句,一旦發生異常,python匹配最近的except語句。

若是內部except能夠處理該異常,則外圍try語句不會捕獲異常。若是不能,或者忽略,外圍try處理

內層異常捕獲失敗執行內層finally跳出外層執行異常捕獲。

try:
    try:
        x = 1
        y = 0
        z= x/y
    except NameError:
        print ("NameError")
    finally:
        print ("Finally inside")
except :
    print ("All exception outside")
finally:
    print ("Finally outside") 

3. 自己拋出異常

觸發異常時候,我們可以使用raise語句自己觸發異常。raise 唯一的一個參數指定了要被拋出的異常。它必須是一個異常的實例或者是異常的類(也就是 Exception 的子類)。

try:
    s = None
    if s is None:
        print ("s 是空對象")
        raise NameError     #如果引發NameError異常,後面的代碼將不能執行
    print(len(s))  #這句不會執行,但是後面的except還是會走到
except TypeError:
    print("類型錯誤空對象沒有長度")
except NameError:
    print("接收到raise的異常NameError")
finally:
    print('end test4')

4.拋出異常時候的參數附加顯示
print("test5")
def myerror( level ):
    if level < 1:
        raise Exception(str(level) + " is Invalid level!")
        # 觸發異常後,後面的代碼就不會再執行
try:
    myerror(0)            # 觸發異常
except Exception as err:
    print(Exception)
    print(type(err))
    print(err)
else:
    print("successfully")
finally:
    print('end test5')

六、創建自己的異常

通過創建一個新的異常類,程序可以命名它們自己的異常。你可以通過創建一個新的異常類來擁有自己的異常。異常類繼承自 Exception 類。舉個例子:

#自定義異常
class LengthRequiredException(Exception):
    def __init__(self,length,minLength):
        Exception.__init__(self)
        self.length = length
        self.minLength = minLength

#引發自定義的異常
l = [1,2,3,4,5]
minLength = 6
try:
    raise LengthRequiredException(len(l),minLength)
except IndexError:
    print("index out of bounds")
except LengthRequiredException as e:
    print("Length not fit :length is %d required %d" %(e.length,e.minLength))
else:
    print("no exception was raised")
finally:
    print("finally will be execute")

參考文章:

https://blog.csdn.net/qq_41554005/article/details/92246002

相關焦點

  • python妙招-異常處理之try-except
    Python中檢測處理異常是非常重要的,這可以增加代碼的健壯性,我們在寫python程序的時候,會可能會遇到一些不可預料的情況,一旦遇到這些情況,運行時程序便可能會崩潰。比如:讀寫文件時候文件打開錯誤或者文件寫入錯誤,寫爬蟲時網絡請求失敗,返回錯誤404.再或者函數處理一些不確定參數時候,都可以用到異常捕獲。
  • python基礎:try...except...的詳細用法
  • python中的異常捕獲
    對於代碼中可能的異常進行處理,可以增加程序的健壯性。在python中,通過try..except語句進行異常捕獲,基本用法如下>>> def calc(a, b):... try:... num = a / b...
  • Python編程思想(32):異常處理中的try…except
    讀者可以在「極客起源」 公眾號中輸入 160442 開始學習。-正文-現在絕大多數程式語言都支持異常處理,異常處理的通行做法是將正常執行的代碼放在特定代碼塊中,然後再將處理異常的代碼放在另一個代碼塊中,如果正常執行的代碼塊的某條語句拋出了異常,那麼就會直接跳到處理異常的代碼塊中繼續執行。而在正常的代碼塊中拋出異常語句後面的所有代碼都不會被執行。
  • 別再亂用 try except 了...
    有不少人在寫 Python 代碼時,喜歡用 try...except Exception,更有甚者一層套一層,不管有沒有用,先套了再說:def func():    try:        "函數內部代碼"    except Exception
  • Python異常捕獲與處理
    什麼是異常?異常即是一個事件,該事件會在程序執行過程中發生,影響了程序的正常執行。一般情況下,在Python無法正常處理程序時就會發生一個異常。異常是Python對象,表示一個錯誤。當Python腳本發生異常時我們需要捕獲處理它,否則程序會終止執行。當一個未捕獲的異常發生時,Python將結束程序並列印一個堆棧跟蹤信息,以及異常名和附加信息。
  • python異常的捕獲與傳遞
    <5> else咱們應該對else並不陌生,在if中,它的作用是當條件不滿足時執行的實行;同樣在try...except...中也是如此,即如果沒有捕獲到異常,那麼就執行else中的事情try: num = 100print numexcept NameError
  • Python基礎入門教程:try-finally語句異常處理
    try: # 可能出現異常的語句finally:  # 無論是否發生異常都會執行的語句其中,finally語句塊用於清理在try塊中執行的操作,如釋放其佔有的資源(如文件對象、資料庫連接、圖形句柄等)。
  • python入門學習異常處理類型
    前言異常是指在程序執行過程中發生的一個事件,影響了程序的正常執行,例如:0做了分母。異常是Python對象,表示一個錯誤。當Python腳本發生異常時我們需要捕獲處理它,否則程序會終止執行。在Java語言中我們知道異常的常用結構為try catch組成,有時也會用到finally,那麼在python中異常是如何來處理的呢?python中的異常處理1.python異常簡單語法python異常的簡單語法為try-except-else語法,注意這裡的關鍵字是except而不是Exception,這與java是有區別的。
  • python面向對象之異常處理
    捕獲異常 2.1 簡單的捕獲異常語法 在程序開發中,如果 對某些代碼的執行不能確定是否正確,可以增加 `try(嘗試)` 來 捕獲異常 捕獲異常最簡單的語法格式:```pythontry: 嘗試執行的代碼except: 出現錯誤的處理``` `try
  • while、for、try except語句中的else
    二、try異常處理語句中的elsetry except異常捕獲處理語句中,else定義用於沒有異常出現時執行的部分。例如,當我們處理有可能導致異常的計算時,else語句定義的部分,可以確保沒有異常發生,得到了正確計算結果。例子是計算簡單的除法。
  • python入門——Python中異常處理
    python大數據課堂已經開始了。想轉行大數據,數據挖掘,機器學習,人工智慧的小夥伴可以關注啦。上一篇帶大家了解了python中的I/O函數。今天我們來繼續了解python中的異常處理。調試環境以python3.6環境為例。需要代碼和demo的朋友可以搜索「欒鵬全棧」到我的CSDN博客。
  • Python異常處理(Python學習筆記05)
    傳入無效的參數AttributeError 訪問類對象中不存在的屬性異常處理方式如果出現了異常,不可以直接將異常拋給用戶,應該使用Python提供的異常處理方法來捕獲並處理異常,處理方法為使用try, except和finally 三個關鍵字。
  • 如何學python 第九課-try&except-錯誤與異常
    今天我們就學習一下如何定位和解決這些問題。 人非聖賢,孰能無過?寫程序的時候難免會遇到一些問題。本篇文章會介紹一些常見的錯誤,並解釋一下其中的道理。 出錯並不是壞事錯誤的出現原因多種多樣。用戶的非法輸入、進程創建失敗等等都可以導致錯誤的出現。
  • python 異常處理
    當Python檢測到一個錯誤時,解釋器就無法繼續執行了,反而出現了一些錯誤的提示,這就是所謂的"異常"捕獲異常<1>捕獲異常 try...except...看如下示例:try: print('test--1---') open('123.txt','r') print('test--2---')except IOError: pass說明:此程序看不到任何錯誤,因為用except 捕獲到了IOError異常,並添加了處理的方法pass 表示實現了相應的實現,但什麼也不做;如果把pass
  • 16-python中的異常
    通過前兩天的文章14-python中的函數,15-再敘python中的函數我們對python中有關函數的知識有了系統的認識和學習,今天我們將接著來看一下python中的異常。(一)Bug的由來和分類    "Bug"一詞的原意是"昆蟲"或"蟲子";而在電腦系統或程序中隱藏著的一些未被發現的缺陷或問題,人們也叫它"bug"。
  • Python學習第50課-處理錯誤和異常
    說明:●首先執行try語句(在關鍵字try和關鍵字except之間的語句)。●如果try語句沒有發生異常,則整個while循環結束。●如果在執行try子句的過程中發生了異常,則執行except語句。●無論try語句執行時是否發生異常,finally語句都會執行。●當時用了try...except語句結構後,如果try發生異常,則while會一直循環下去,不會造成程序崩潰。●一個 try 語句可能包含多個except子句,分別來處理不同的特定的異常。最多只有一個分支會被執行。
  • 【python學習】python的常見異常類
    中國史之【盤庚遷殷】:      商朝建立後屢次遷都。
  • 十、python基礎之異常處理結構與程序調試方法
    實驗目的:學習python的異常處理和程序調試實驗環境:已正確安裝python3.51、異常的基本概念異常是指程序運行時引發的錯誤,得不到正確的處理將會導致程序終止運行合理地使用異常處理結構可以使得程序更加健壯,具有更強的容錯性。例如:最常見的除數為0,python會拋出「ZeroDivisionError"異常。
  • 第16天:Python 錯誤和異常
    在 Python 中,異常是一個對象,用於表示一個錯誤,當 Python腳本發生異常時我們需要捕獲和處理它,否則程序會終止執行。處理異常Python 提供了 try/except語句用來捕獲和處理異常。try 語句用來檢測語句塊中是否有錯誤,except 語句則用來捕獲 try 語句中的異常,並進行處理,附加的 else 可以在 try 語句沒有異常時執行。