Python 八 異常處理與反射

2022-09-01 12:03:12 字數 3612 閱讀 5160

try

: **塊

except

exception as e:

**塊#

將日誌寫在這裡,將錯誤資訊寫入日誌檔案

try

: ...(正**)

excrpt:

...(抓取錯誤的**)

else

: ...(沒有錯誤的**)

finally

: ...(不管有沒有錯誤,都會執行)

try

: **塊

....

**塊except

exception as obj:

print

(obj)

#obj就是封裝了當前觸發的錯誤資訊。

類似成:

class

message:

def__init__

(self,name)

self.name =name

obj = message('

ssss

')

描    述:所有報錯的種類都是繼承了乙個總的類(exception),exception可以抓到所有錯誤,是乙個統一錯誤輸出,其他,只能處理某一種情況,為了精準定位問題。

例    子:

try

: int(

'sds')

l = [11,22]

l[100]

except

indexerror as e :

print('

indexerror

') #

1.log

except

valueerror as e :

print('

valuerror

') #

2.log

except

exception as e:

print('

exception')

else

:

print('

else')

finally

:

print('

finally

')

描    述:主動觸發異常主要是為了有的時候到了一定的位置上就觸發乙個自定義的異常,在python3中,建立乙個基類就是利用觸發異常來完成的。

例    子:

raise exception('

郵件傳送失敗')

程式分層:

defexecute():

try:

result = fool() #

返回1或0

if result: #

如果是1,則成立,繼續往下走

pass

else: #

否則就是0,不成立,就報錯

raise exception('

郵件傳送失敗')

fool2()

except

exception as e:

print('

記錄日誌

')

描    述:斷言就是乙個異常處理的簡寫,而且斷言是乙個硬性條件。

作    用:一、讓程式是要不滿足條件,就立刻終止。二、起到乙個警示的作用,被人砍你的**就知道這個條件必須走才能往下走。

例    子:

assert

條件 如果條件是true,就無感知往下執行。

如果條件是fales,就會直接報錯。

描     述:自己利用可以繼承exception的特點,定義乙個錯誤。

例     子:

class

haitaoerror(exception):

def__init__

(self, message):

self.msg =message

super(haitaoerror, self).

__init__

(message)

try:

name = '

chenxin

'if name != '

haitao':

raise haitaoerror('

你不能進入我的身體')

except

haitaoerror as e:

print

(e,e.msg)

except

exception as e:

print(e,111)

在python中的反射功能是由以下四個內建函式提供:hasattr、getattr、setattr、delattr,該四個函式分別用於對物件內部執行:檢查是否含有某成員、獲取成員、設定成員、刪除成員。

#

hasattr(物件(容器,模組),'名稱') #以字串的形式判斷某個物件中是否有指定的屬性。

#getattr(物件(容器,模組),'名稱') #以字串的形式在某個物件中獲取指定的屬性。

#setattr(物件(容器,模組),'名稱') #以字串的形式在某個物件中新增指定的屬性。

#getattr(物件(容器,模組),'名稱') #以字串的形式在某個物件中刪除指定的屬性。

1、使用者請求的url,使用反射的方式將url相應的方法呼叫出來。

**描述:

controller/accout.py

acoout.py

deflogin():

return

'請輸入使用者名稱

'def

logout():

return

'跳回登陸潔面

'

#/usr/bin/env python

while

true:

inp = input('

請輸入url:')

m,n = inp.split('/'

)

try:

module = __import__('

controller.%s

'% m,fromlist=true)

#print(module)

ifhasattr(module,n):

v =getattr(module,n)

result =v()

else

: result='

404'

except

exception as e:

result = 500

print

(result)

結果: 請輸入url:account/login

請輸入使用者名稱

請輸入url:account/logout

跳回登陸潔面

請輸入url:

結論:反射是通過字串的形式操作物件相關的成員。一切事物都是物件!!!

即可以使用反射將所有的物件查詢和獲取出來,字串、變數、模組、類、方法、函式、等等。

八 Python入門 異常處理

異常是乙個事件,該事件會在程式執行過程中發生,一般情況下,在python中無法處理程式時就會發生異常,當python指令碼發生異常時,我們需要捕獲並處理異常,否則程式就會終止執行 try 可能會出錯的語句 except exception as e 異常處理 常見的錯誤和異常 可能會報錯或出現異常的...

異常處理及反射

反射 dir obj,property method 列出物件的屬性名和方法名 hasatter obj,property method 判斷是否存在屬性和方法 getatter obj,property method,default 呼叫屬性或方法 setatter obj,property me...

python 11 反射與異常

反射與異常加上類似於反射的檔案的操作都將在下面以 的形式體現。一,反射 coding utf 8 usr bin env python3 author book miki 主要學習 getattr setattr hasattr delattr defbulk self print s wangwa...