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放在最後
主動拋出異常ide
#主動拋出異常 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()
自定義異常code
#自定義異常 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)