python在執行過程中,程式解釋機制會測試**,如檢測不通過則會丟擲異常。
try: aa = 10bb = '10'
cc = aa +bb
except
exception as e:
print('
error:
',e)
#output輸出異常,數字不能與字元向加
error: unsupported operand type(s) for +: '
int'
and'
str'
try:aa = 10
bb = '10'
cc = aa + bb
except typeerror as e:
print('錯誤資訊;',e)
python中的異常種類非常多,每個異常專門處理某個項的異常!
attributeerror 試圖訪問乙個物件沒有的樹形,比如foo.x,但是foo沒有屬性xioerror 輸入/輸出異常;基本上是無法開啟檔案
importerror 無法引入模組或包;基本上是路徑問題或名稱錯誤
indentationerror 語法錯誤(的子類) ;**沒有正確對齊
indexerror 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5]
keyerror 試圖訪問字典裡不存在的鍵
keyboardinterrupt ctrl+c被按下
nameerror 使用乙個還未被賦予物件的變數
syntaxerror python**非法,**不能編譯(個人認為這是語法錯誤,寫錯了)
typeerror 傳入物件型別與要求的不符合
unboundlocalerror 試圖訪問乙個還未被設定的區域性變數,基本上是由於另有乙個同名的全域性變數,導致你以為正在訪問它
valueerror 傳入乙個呼叫者不期望的值,即使值的型別是正確的
s1 = 'hello
'try
: int(s1)
except
keyerror as e:
print('
鍵錯誤'
)except
indexerror as e:
print('
索引錯誤')
except
typeerror as e:
print('
型別錯誤')
except
valueerror as e:
print('
值的型別錯誤')
except
exception as e:
print('
錯誤')
try:
#主**塊
pass
except
keyerror as e:
#異常時,執行該塊
pass
else:#
主**塊執行完,執行該塊
pass
finally: #
無論異常與否,最終執行該塊
pass
classmyexception(exception):
def__init__
(self, msg):
self.message =msg
def__str__
(self):
return
self.message
try:
raise myexception('
我的異常
') #
raise為主動觸發異常
except
myexception as e:
print('
>>>:
',e)
assert斷言是宣告其布林值必須為真的判定,如果發生異常就說明表達示為假。可以理解assert斷言語句為raise-if-not,用來測試表示式,其返回值為假,就會觸發異常。
assert 1 == 1print('
---------------')
assert 1 == 2
#output,如果為真時不輸出資訊,如果為假時flase則直接丟擲異常
---------------traceback (most recent call last):
file
"z:/python_project/day18/ddd/yichang.py
", line 26, in
assert 1 == 2assertionerror
python中的反射功能是由以下四個內建函式提供:hasattr、getattr、setattr、delattr,改四個函式分別用於對物件內部執行:檢查是否含有某成員、獲取成員、設定成員、刪除成員。
classa(object):
def__init__
(self):
self.name = '
python
'self.age = 18
deffunc(self):
return
self.age
obj1 =a()
#檢查物件是否含有成員
print(hasattr(obj1,'
age')) #
true
print(hasattr(obj1,'
func
')) #
true
#獲取物件成員
print(getattr(obj1,'
name
')) #
python
print(getattr(obj1,'
func
')) #
>
#設定物件成員
setattr(obj1,'
slary
',9999)
print(getattr(obj1,'
slary
')) #
9999
#刪除成員
delattr(obj1,'
slary')
print(hasattr(obj1,'
slary
')) #
false
classa(object):
def__init__
(self):
self.name = '
python
'self.age = 18
deffunc(self):
print('
func:
',self.name)
return
self.age
obj1 =a()
#通過獲取物件的方法來執行物件方法
obj =a()
fun = getattr(obj,'
func')
fun()
Python3 異常處理
python3.5 異常處理 try用法 try except語句主要是用於處理程式正常執行過程中出現的一些異常情況 try finally語句則主要用於在無論是否發生異常情況,都需要執行一些清理工作的場合 完整語句中,else語句的存在必須以except x或者except語句為前提,也就是說el...
python3 異常處理
python中的異常捕獲 異常處理語句關鍵字有try except else finally,主要組合如下 1.不捕獲異常,不管是否異常仍要執行操作 finally 先執行finally中的語句,再丟擲異常。不捕獲異常,丟擲異常後,仍執行finally中的語句 try print 1 0 final...
Python3異常處理
在程式設計過程中為了增加友好性,在程式出現bug時一般不會直接將錯誤資訊展示給使用者,而是提供乙個友好的輸出提示。1.異常基礎 常用結構 try pass except exception,ex pass 其他結構 try 主 塊 pass except keyerror,e 異常時,執行該塊 pa...