15.1異常處理
阿新 • • 發佈:2018-04-13
Python 異常 異常處理
try:
#代碼塊,邏輯
inp=input("序號:")
i=int(inp)
except Exception as e:
#e是一個Exception的對象,裏面封裝了錯誤信息
#錯誤時執行
i=1
print(e)
# invalid literal for int() with base 10: ‘w‘
print(i)
異常有多種類型
try:
li=[1,2,3]
li[999]
except IndexError as e:
print("IndexError:",e)
try: int("dhj") #如果ValueError不能捕獲,就會報錯 li1=[1,2,3] #一旦出現錯誤,try後面的代碼就不再執行了 li1[999] except ValueError as e: print("ValueError:",e) except IndexError as e: print("IndexError",e) except Exception as e: print("Exception:",e) else: print("ok!") #前面都沒錯,執行else finally: print("go on ……") #不管出不出錯,都要執行finally # IndexError,ValueError都是Exception的子類 #日誌分類時候,需要對細分的錯誤放在前面,Exception放在最後
主動拋出異常
#主動拋出異常
try:
#主動觸發異常
raise Exception("異常123") #創建了一個Exception()對象
except Exception as e:
print(e)
# 異常123
日誌實例
def db(): return False def index(): try: rh="hgd" rh=int(rh) result=db() if not result: raise Exception("數據庫處理錯誤") except Exception as e: str_error=str(e) print(str_error) f=open("log.txt","a",encoding="utf-8") f.write(str_error) f.close() index()
自定義異常
#自定義異常
class olderror(Exception):
def __init__(self,msg):
self.message=msg
def __str__(self):
return self.message
a=olderror("ojj")
print(a)
# ojj
try:
raise olderror("HEHE")
except olderror as e:
print(e)
# HEHE
斷言
# assert 斷言,條件成立,繼續執行,條件不成立,報錯,不能往後執行 # assert 條件 print(23) assert 1==2 print(456)
15.1異常處理