python——異常

一、異常

異常是指在語法正確的前提下,程序運行時報錯就是異常。 當Python腳本發生異常時我們需要捕獲處理它,否則程序會終止執行。

二、異常捕獲

1.基本語法

語法格式 執行流程
try: …代碼1…代碼2… …代碼3… except 異常類型: …處理異常代碼… 程序從上往下執行,先執行try中 的代碼,如果代碼1報錯,則不會 執行代碼2和3,執行執行 exception中的異常代碼。 如果try中沒有報錯,則不執行 except中的代碼
try:
    print("程序開始")
    print(1/0)
    print("程序結束")
except ZeroDivisionError:
    print("程序有錯")

結果:

程序開始
程序有錯
  1. 捕獲多個異常 如果一段代碼中可能會觸發多個異常,我們可以寫一個try多個except來捕獲多個異常。
try:
    a=[1,2]
    print(1/0)
    print(a[3])
except ZeroDivisionError:
    print("被除數不能爲零")
except IndexError:
    print("索引超出範圍")

結果:

被除數不能爲零
  1. 捕獲所有異常
a=[1,3,4,5,6,7,88]
b=iter(a)
while True:
    try:
        print(next(b))
    except StopIteration as e:
        print(e)
        break

結果:

1
3
4
5
6
7
88
  1. 獲取異常信息描述
class A:
    pass
x=10
print(A,x)

zd={"name":"張三"}
try:
    print(zd["age"])
except KeyError as e:
    print(e)

結果:

<class '__main__.A'> 10
'age'
  1. else格式
try:
    print("haha")
    print(1/0.3)
except Exception:
    print("捕獲到了異常")
else:
    print("沒有發生異常")

結果:

haha
3.3333333333333335
沒有發生異常
  1. try…finally格式
a=[1,2]
try:
    print("x")
    print("y")
    print(a[3])
    print(2/0)
except:
     print(2)
else:
    print(3)
finally:
    print("無論異常產生與否都要執行")

結果:

x
y
2
無論異常產生與否都要執行

三、觸發異常 用戶可以根據業務邏輯手動的拋出異常。並且用戶可以根據需求來拋出系統異常(python已 經定義好的異常)和用戶自定義的異常。

  1. 拋出系統異常
格式 描述
raise 異常類型(‘描述信息’) 當程序執行到raise是,會自動的 觸發異常,讓程序結束
while True:
    name=input("請輸入姓名,不能少於三個字")
    try:
        if len(name)<3:
            raise Exception("姓名太少,請重新輸入")
        else:
            pwd=input("請輸入密碼")
            print(name,pwd)
    except Exception as e:
        print(e)

結果:

請輸入姓名,不能少於三個字333
請輸入密碼222
333 222
請輸入姓名,不能少於三個字
  1. 拋出自定義異常
    當程序中的異常類型不滿足時,我們可以自定義類型異常
class MyException(Exception):

    def __init__(self,lenght,atlast):
        self.lenght=lenght
        self.atlast=atlast
    def __str__(self):
        return "您輸入的長度是{},至少輸入的長度是{}".format(self.lenght,self.atlast)

msg=input("請輸入長度大於5")
try:
    if len(msg)<5:
        raise  MyException(len(msg),5)
except MyException as e:
    print(e)

結果:

請輸入長度大於52
您輸入的長度是1,至少輸入的長度是5
發佈了37 篇原創文章 · 獲贊 49 · 訪問量 4077
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章