python基礎(chǔ)之錯(cuò)誤和異常處理
發(fā)布日期:2021-12-21 00:43 | 文章來(lái)源:源碼之家


import Exception
# except 在捕獲錯(cuò)誤異常的時(shí)候 是要根據(jù)具體的錯(cuò)誤類型來(lái)捕獲的
# 用一個(gè)塊 可以捕獲多個(gè)不同類型的異常
# EXception 可以捕獲所有異常 當(dāng)對(duì)出現(xiàn)的問(wèn)題或者錯(cuò)誤不確定的情況下 可以使用此種
print(dir(Exception))
try:
# print(b) #捕獲邏輯的代碼
li=[1,2,3,4]
print(li[10])
pass
except NameError as msg:
# 捕獲到的錯(cuò)誤 才會(huì)在這里執(zhí)行
print(msg)
pass
except IndexError as msg:
print(msg)
print('初次接觸異常')
print('HAHAHAHAHHAHAHAH')


try:
# print(b) #捕獲邏輯的代碼
# li=[1,2,3,4]
# print(li[10])
a=10/0
pass
except NameError as msg:
# 捕獲到的錯(cuò)誤 才會(huì)在這里執(zhí)行
print(msg)
pass
except IndexError as msg:
print(msg)
pass
except ZeroDivisionError as msg:
print(msg)
print('初次接觸異常')
print('HAHAHAHAHHAHAHAH')

異常類型

try:
print(b) #捕獲邏輯的代碼
# li=[1,2,3,4]
# print(li[10])
# a=10/0
pass
# except NameError as msg:
# # 捕獲到的錯(cuò)誤 才會(huì)在這里執(zhí)行
# print(msg)
# pass
# except IndexError as msg:
# print(msg)
# pass
# except ZeroDivisionError as msg:
# print(msg)
# pass
except Exception as msg:
print(msg)
pass
print('初次接觸異常')
print('HAHAHAHAHHAHAHAH')

def A(s):
return 10/int(s)
pass
def B(s):
return A(s)*2
def main():
try:
B('0')
pass
except Exception as msg:
print(msg)
pass
pass
main()
# 不需要在每個(gè)可能出錯(cuò)的地方去捕獲,只要在合適的層次去捕獲錯(cuò)誤就可以了 這樣的話 就大大減少我們寫(xiě)try----exception的麻煩
# 異常的拋出機(jī)制
#如果在運(yùn)行時(shí)發(fā)生異常 解釋器會(huì)查找相應(yīng)的異常捕獲類型
#如果在當(dāng)前函數(shù)里面沒(méi)有找到的話 它會(huì)將異常傳遞給上層的調(diào)用函數(shù)
#如果在最外層 沒(méi)有找到的話 解釋器就會(huì)退出 程序down掉



class ToolongmyException(Exception): #自定義異常
def __init__(self,leng):
'''
:param leng:長(zhǎng)度
'''
self.len=leng
pass
def __str__(self):
return '您輸入的數(shù)據(jù)長(zhǎng)度是'+str(self.len)+'已經(jīng)超過(guò)長(zhǎng)度了'
pass
def name_Test():
name=input('請(qǐng)輸入姓名:')
if len(name)>5:
raise ToolongmyException(len(name))#拋出異常
else:
print(name)
pass
pass
name_Test()


class ToolongmyException(Exception): #自定義異常
def __init__(self,leng):
'''
:param leng:長(zhǎng)度
'''
self.len=leng
pass
def __str__(self):
return '您輸入的數(shù)據(jù)長(zhǎng)度是'+str(self.len)+'已經(jīng)超過(guò)長(zhǎng)度了'
pass
def name_Test():
name=input('請(qǐng)輸入姓名:')
try:
if len(name)>5:
raise ToolongmyException(len(name))#拋出異常
else:
print(name)
pass
except ToolongmyException as result:
print(result)
pass
finally:
print('執(zhí)行完畢了')
pass
name_Test()

總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注本站的更多內(nèi)容!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
相關(guān)文章
關(guān)注官方微信