python學習 異常處理

2022-07-25 07:48:08 字數 2636 閱讀 7015

小技巧

isinstance(obj,foo)

檢查是否obj是否是類 foo 的物件

class foo(object

): pass

obj =foo()

isinstance(obj, foo)

issubclass(sub, super)

檢查sub類是否是 super 類的派生類

class

foo(object):

pass

class

bar(foo):

pass

issubclass(bar, foo)

異常處理

在程式設計過程中為了增加友好性,在程式出現bug時一般不會將錯誤資訊顯示給使用者。

格式:

#

python 2.7

try:

pass

except

exception,ex:

pass

#python 3.x

try:

pass

excep exception as ex:

pass

異常種類

python中的異常種類非常多,每個異常專門用於處理某一項異常!

常用異常:

attributeerror 試圖訪問乙個物件沒有的樹形,比如foo.x,但是foo沒有屬性x

ioerror 輸入/輸出異常;基本上是無法開啟檔案

importerror 無法引入模組或包;基本上是路徑問題或名稱錯誤

indentationerror 語法錯誤(的子類) ;**沒有正確對齊

indexerror 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5]

keyerror 試圖訪問字典裡不存在的鍵

keyboardinterrupt ctrl+c被按下

nameerror 使用乙個還未被賦予物件的變數

syntaxerror python**非法,**不能編譯(個人認為這是語法錯誤,寫錯了)

typeerror 傳入物件型別與要求的不符合

unboundlocalerror 試圖訪問乙個還未被設定的區域性變數,基本上是由於另有乙個同名的全域性變數,

導致你以為正在訪問它

valueerror 傳入乙個呼叫者不期望的值,即使值的型別是正確的

常用異常

view code

exception為抓取所有異常(不能抓取語法的錯誤)

例項:

while

true:

num_a = input('

input a integer')

num_b = input('

input a interger')

c = range(10)

try:

num1 =int(num_a)

num2 =int(num_b)

result = num1 +num2

c[11]

except

valueerror as e:

print('

資料型別出錯!

',e)

except indexerror as e:

print('索引錯誤',e)

except

exception as e:

print('

未知錯誤如下:')

print (e)

自定義異常

class

exception_handler(exception):

def__init__

(self,msg):

self.message =msg

def__str__

(self):

return

self.message

a = 1

try:

raise exception_handler('

這是乙個異常')

except

exception_handler as msg:

print(msg)

finally 及 斷言

a = 1

try:

assert a== 2 #

斷言,對條件進行判斷,如果條件成立向下執行。

print('

正常執行')

except

exception as msg:

print

(msg)

else:#

沒出現異常列印資訊

print('

這是乙個測試資訊')

finally:#

不管是否出現異常都列印資訊

print('

不管條件是否成立,都列印此條資訊!

')

Python學習 異常處理

assertionerror 斷言語句失敗 assertionerror 斷言語句失敗,一般是在測試程式時置入檢查點 my list love my list.pop assert len my list 0 traceback most recent call last file line 1,i...

python學習 異常處理

class myerror exception definit self,msg self.msg msg defstr self return str self.msg 777 try 檢測try語句塊中的錯誤 print 2 0 raise myerror 主動丟擲錯誤 except myerr...

python學習 異常處理

這次的學習內容是異常處理,簡單的說就是python內建了異常檢測機制,能夠識別出類似除數為0 開啟檔案失敗這一類錯誤。因此,就可以用try except 對可能出現的錯誤進行預判,從而讓程式避開錯誤段繼續執行下去。這篇blog不準備列舉各種異常型別 它們將作為 try except 中except後...