day27 物件導向的總結 異常處理

2022-08-20 20:00:15 字數 4129 閱讀 4008

錯誤的分類

if

if 2>1

print(222)

dic =

num = int(input("請輸入數字"))

dic =

dic["hobby"]

什麼是異常?

**發生異常錯誤之後,你的程式就中斷了

異常處理?

當**出現異常時,我通過某種方式不讓你的程式中斷,合理的「跳」過去,異常處理

為什麼要有異常處理?

異常處理的兩種方式

try的嘗試

try:

num = int(input("請輸入序號")) # 出現valueerror錯誤之後,直接跳轉到except語句

print(111)

except valueerror:

print(666)

try:

dic =

print(dic["age"])

num = int(input("請輸入序號")) # 出現valueerror錯誤之後,直接跳轉到except語句

print(111)

except valueerror:

print(666) # 報錯

結構1:單分支
try:

num = int(input("請輸入序號")) # 出現valueerror錯誤之後,直接跳轉到except語句

dic =

print(dic["age"])

print(111)

except valueerror:

print(666)

結構2:多分支
try:

num = int(input("請輸入序號")) # 出現valueerror錯誤之後,直接跳轉到except語句

dic =

print(dic["age"])

l1 = [1,2]

print(l1[100])

print(111)

except valueerror:

print("輸入的有非數字元素")

except keyerror:

print("沒有此鍵")

except indexerror:

print("沒有此下表")

結構3:萬能異常

萬能異常:處理所有python識別的異常

try:

dic =

print(dic["age"])

l1 = [1,2]

print(l1[100])

print(111)

except exception as e:

print(e)

print(666)

什麼時候用萬能異常?

如果你對錯誤資訊不關心,只是想要派出錯誤讓程式繼續執行,用萬能異常

什麼時候用多分支?

如果你對錯誤資訊要進行明確的分流,讓你的程式多元化開發,則使用多分支

# 之前的寫法:

# num = input("輸入序號")

# if num.isdecimal():

# num = int(num)

# if 0 < num < 5:

# if num == 1:

# pass # func()

# else:

# print("請輸入數字")

def func():

pass

def func1():

pass

dic =

try:

num = int(input("請輸入序號"))

dic[num]()

except valueerror:

print("請輸入數字")

except keyerror:

print("請輸入範圍內的序號")

結構4:多分支+萬能異常
def func():

pass

def func1():

pass

dic =

try:

num = int(input("請輸入序號"))

dic[num]()

except valueerror:

print("請輸入數字")

except keyerror:

print("請輸入範圍內的序號")

except exception:

print("程式出現意料之外的錯誤...")

結構5: try else finally

except 必須依賴於try,else必須依賴於except和try

finally只是依賴於try

try:

dic =

print(dic["age"])

l1 = [1,2]

print(l1[100])

print(111)

except keyerror:

print("沒有此鍵")

except indexerror:

print("沒有此下標")

else:

print("如果沒有出現異常則執行這裡")

finally:

print("finally 666")

try:

dic =

print(dic['age'])

l1 = [1, 2]

print(l1[100])

# except keyerror:

# print('沒有此鍵')

# except indexerror:

# print('沒有此下標')

# except indexerror:

# pass

finally:

print('finally 666')

用在 關閉資料庫鏈結,檔案控制代碼關閉,資料儲存等

# with open('test1',encoding='utf-8',mode='r+') as f1:

# try:

# for i in f1:

# print(i)

# if ....:

# finally:

## f1.close()

# 在return結束函式之前,執行finally**.

# def func():

# try:

# print(111)

# return 666

# finally:

# print(222)

# print(func())

結構6:主動觸發異常
raise valueerror("出現了value錯誤")
結構7

斷言:展現出一種強硬的態度

# assert 條件

name = "alex"

n1 = input("請輸入:")

assert name == n1

print(111)

print(222)

結構8:自定義異常

python中給你提供的錯誤型別很多,但不是全部的錯誤

class liyeerror(baseexception):

def __init__(self, msg):

self.msg = msg

def __str__(self):

return self.msg

try:

# 三行

raise liyeerror('socket.connent.....')

except liyeerror as e: # e = liyeerror("型別錯誤)

print(e)

day27物件導向(四)

授權 授權是包裝的乙個特性,包裝乙個型別通常是對已經存在的型別的一些定製,這種做法可以新建 修改或刪除原有產品的功能,其他的則保持原樣 授權的過程,及時所有更新的功能都是由新類的某部分來 處理,但已存在的功能就授權給物件的預設屬性 getattr class open def init self,f...

python基礎一 day27 類的內建方法

內建的類方法 和 內建的函式之間有著千絲萬縷的聯絡 雙下方法 obj.str str obj obj.repr repr obj class teacher def init self,name,salary self.name name self.salary salary def str sel...

12 異常 物件導向的總結

1.1 定義 異常時指在程式執行的過程中發生的不正常的事情,它會中斷正在執行的程式 1.2 異常處理 使用異常處理機制為程式提供了錯誤處理的能力 1.3 掌握使用try catch異常處理的三種情況 第一種 無異常 第二種 有異常 異常匹配 異常不匹配 1.4throwable 最大的類 error...