python自定義異常和主動丟擲異常

2022-09-16 09:27:12 字數 1620 閱讀 4938

python自定義異常和主動丟擲異常

自定義異常主要是利用了自己定義的異常類的名字,對異常進行分門別類,再沒有別的作用

import re

import os

class existserror(exception):

pass

class keyinvaliderror(exception):

pass

def fun(path,mnk):

"""去path路徑的檔案中,找到字首為prev的一行資料,獲取資料並返回給呼叫者。

1000,成功

1001,檔案不存在

1002,關鍵字為空

1003,未知錯誤

...:return:

"""response =

try:

with open(path,encoding="utf-8") as f1:

line=f1.readline()

str = re.match("mnk", line)

if not os.path.exists(path):

raise exception() #丟擲的是existserror類的乙個例項

if not str:

raise keyinvaliderror()

except existserror as e: #下面的捕獲異常是逐行往下匹配的,只要捕獲到異常就不往下執行了

response['code']=1003 #捕獲異常以後可以做一些自己定義的東西

print(response['code'])

except exception as e: #**自己定義多個異常類名的目的就是將來區分不同的錯誤型別,再沒有別的意思

response['code'] = 1004

print(response['code'])

fun(r"e:\day26\s15day26\test", "p")

下面是對主動丟擲異常的一點總結

#知識點:如何自定義類

class myexception(exception): #讓myexception類繼承exception

def __init__(self,name,age):

self.name = name

self.age = age

try:

#知識點:主動丟擲異常,就是例項化乙個異常類

raise myexception("zhansgan",19) #例項化乙個異常,例項化的時候需要傳引數

except myexception as obj: #這裡體現乙個封裝,

print(obj.age,obj.name) #捕獲的就是myexception類攜帶過來的資訊

except exception as obj: #萬能捕獲,之前的可能捕獲不到,這裡新增exception作為保底

print(obj)

python自定義異常 主動丟擲異常

def password verify pwd 密碼大於8位返回值,小於八位主動丟擲異常 if len pwd 8 return pwd elif len pwd 8 自定義異常,並丟擲 pwd error exception 密碼長度小於8位 raise pwd error 呼叫 pwd a in...

python 自定義異常和異常捕捉

異常捕捉 try xx1 raise exception xx2 except exception1,exception2,x3 else xx4 finally x51.raise 語句可以自定義報錯資訊,如上。2.raise後的語句是不會被執行了,因為已經丟擲異常,控制流將會跳到異常捕捉模組。3...

python自定義異常

1 可以通過建立乙個新的exception類來擁有自己的異常。異常應該繼承自 exception 類,或者直接繼承,或者間接繼承。raise nameerror hithere traceback most recent call last file line 1,in module raise n...