什麼是異常:
程序遇到錯誤後,會引發異常,如果異常對象未被處理或捕捉,程序會回溯Traceback終止執行;
異常捕捉和處理方式
⑴try:
print(10/0)
except Exception as e: #Exception是所有異常的基類
print("Invalid input",e)
#當我們知道可能出現的異常類型時,可以指定處理的異常類型,除指定的異常類型外 ,其它異常將依然會導致程序崩潰
⑵try:
y=input('Enter the number')
print(10/y)
except (ZeroDivisionError,TypeError) as e:
print(e)
⑶nuffled=False #通過本變量可進行異常的屏蔽和開啓
try:
y=input('Enter the number')
print(10/y)
except ZeroDivisionError:
if nuffled: #當開關打開時,except捕捉到異常後,會打印異常信息,不影響用戶使用
print('Division by zero is illegal')
else:
raise #當開頭未打開時,except捕捉到異常後,會引發異常,方便內部使用時準確定位問題
⑷try:
print(x/y)
except : #捕捉所有異常,隱藏所有未處理的錯誤,比較危險的一種方式
print("something wrong happened")
⑸try:
print(x/y)
except Exception as e :
print(e)
print("please try again")
else:
print("over") #只有在未出現異常時,else後的語句纔會被執行
finally:
print("cleaning up")#不管是否出現異常,finally後的語句都會被執行
raise語句
當程序出現錯誤,python會自動引發異常,也可以通過raise顯示地引發異常。一旦執行了raise語句,raise後面的語句將不能執行。
try: if i in range(5): print (10/i) raise ZeroDivisionError #如果引發ZeroDivisionError異常,後面的代碼將不能執行 print len(s) #這句不會執行,但是後面的except還是會走到 except TypeError: print "空對象沒有長度"