小技巧
isinstance(obj,foo)
檢查是否obj是否是類 foo 的物件
class foo(objectissubclass(sub, super)): pass
obj =foo()
isinstance(obj, foo)
檢查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沒有屬性xview codeioerror 輸入/輸出異常;基本上是無法開啟檔案
importerror 無法引入模組或包;基本上是路徑問題或名稱錯誤
indentationerror 語法錯誤(的子類) ;**沒有正確對齊
indexerror 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5]
keyerror 試圖訪問字典裡不存在的鍵
keyboardinterrupt ctrl+c被按下
nameerror 使用乙個還未被賦予物件的變數
syntaxerror python**非法,**不能編譯(個人認為這是語法錯誤,寫錯了)
typeerror 傳入物件型別與要求的不符合
unboundlocalerror 試圖訪問乙個還未被設定的區域性變數,基本上是由於另有乙個同名的全域性變數,
導致你以為正在訪問它
valueerror 傳入乙個呼叫者不期望的值,即使值的型別是正確的
常用異常
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)
classfinally 及 斷言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)
a = 1try:
assert a== 2 #
斷言,對條件進行判斷,如果條件成立向下執行。
print('
正常執行')
except
exception as msg:
(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後...