異常處理

#異常處理:是錯誤發生的信號,一旦程序出錯,就會產生一個異常,應用程序未處理該異常,異常便會拋出,程序隨之終止。 #常見異常類型: #1.語法錯誤 #2.邏輯錯誤 IndexError #3.不存在的類,報:AttributeError class foo: pass foo.x #4.不存在的key,報KeyError k={'a':1} k['y'] #5.如果0做除數,報ZeroDivisionError #6.不可迭代類型,報TypeError for i in 3: pass #7.不能把字符串轉化數字,報ValueError age=input('>>:') age=int(age) #int轉化爲數字 #處理異常try #格式 try: #檢測下面異常 出錯的代碼 except 異常的類型: #捕捉上面的代碼的異常類型,相同執行pass pass try: l=[] print(l[1]) print('11111') except IndexError: pass #as e 拿到異常的值#異常分三部分,異常的追蹤信息,異常的類,異常的值。 try: l=[] print(l[1]) print('11111') except IndexError as e: print('index',e) #多個except異常捕捉 try: l = [] print(l[1]) print('11111') d={} d=['x'] except IndexError as e: print('index',e) except KeyError as e: print('key',e) #Exception匹配所有異常 try: l = [] print(l[1]) print('11111') d={} d=['x'] except Exception as e: print('excrption',e) #例: try: l = [] print(l[1]) print('11111') d={} d=['x'] except IndexError as e: print('index',e) except KeyError as e: print('key',e) except Exception as e: print('excrption',e) #except與else 連用,else:沒有異常發生的時候觸發。 try: l = [] print(l[1]) print('11111') d={} d=['x'] except IndexError as e: print('index',e) except KeyError as e: print('key',e) except Exception as e: print('excrption',e) else: print('沒有異常') #finally #有沒有異常都觸發,應用場景回收系統資源。 try: l = [] print(l[1]) print('11111') d={} d=['x'] except IndexError as e: print('index',e) except KeyError as e: print('key',e) except Exception as e: print('excrption',e) else: print('沒有異常') finally: print('有沒有異常都觸發') #raise #主動拋出異常 stu=['sdf','er'] if len(stu) == 0: raise TypeError print('raise') #assert #斷言(同上) stu=['sdf','er'] assert len(stu) > 0 print('assert') #自定義異常 class My(BaseException): def __init__(self,msg): super(My,self).__init__() #父類重用 self.msg=msg def __str__(self): #內置函數,打印時觸發,默認打印內存地址 return '<%s> %self.msg' raise My('類型錯誤') #異常的值,print(obj)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章