python基礎(chǔ)之錯(cuò)誤和異常處理


import Exception
# except 在捕獲錯(cuò)誤異常的時(shí)候 是要根據(jù)具體的錯(cuò)誤類型來捕獲的
# 用一個(gè)塊 可以捕獲多個(gè)不同類型的異常
# EXception 可以捕獲所有異常 當(dāng)對(duì)出現(xià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ò)誤就可以了 這樣的話 就大大減少我們寫try----exception的麻煩
# 異常的拋出機(jī)制
#如果在運(yùn)行時(shí)發(fā)生異常 解釋器會(huì)查找相應(yīng)的異常捕獲類型
#如果在當(dāng)前函數(shù)里面沒有找到的話 它會(huì)將異常傳遞給上層的調(diào)用函數(shù)
#如果在最外層 沒有找到的話 解釋器就會(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)超過長(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)超過長(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é)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Python+Pygame實(shí)現(xiàn)趣味足球游戲
這篇文章主要為大家分享了一個(gè)基于Python和Pygame實(shí)現(xiàn)的一個(gè)趣味足球游戲,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下2022-05-05
python3?flask使用連接池連接數(shù)據(jù)庫(kù)實(shí)例
這篇文章主要為大家介紹了python3?flask使用連接池連接數(shù)據(jù)庫(kù)實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
深入學(xué)習(xí)Python中的上下文管理器與else塊
這篇文章主要給大家介紹了關(guān)于Python中上下文管理器與else塊的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08
使用Python實(shí)現(xiàn)視頻轉(zhuǎn)音頻與音頻轉(zhuǎn)文本
這篇文章主要為大家詳細(xì)介紹了使用Python實(shí)現(xiàn)視頻轉(zhuǎn)音頻與音頻轉(zhuǎn)文本的相關(guān)知識(shí),文中的示例代碼簡(jiǎn)潔易懂,有需要的小伙伴可以參考一下2024-02-02
python實(shí)現(xiàn)截取屏幕保存文件,刪除N天前截圖的例子
今天小編就為大家分享一篇python實(shí)現(xiàn)截取屏幕保存文件,刪除N天前截圖的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08
Python?超簡(jiǎn)潔且詳細(xì)爬取西瓜視頻案例
今天給大家?guī)硪黄廊∥鞴弦曨l的小教程,很簡(jiǎn)單的幾十行代碼就可以實(shí)現(xiàn)了,每一段代碼都詳細(xì)說明了用途,看完你就能夠自己動(dòng)手寫,感興趣的同學(xué)快來跟著小編往下看吧2021-11-11
關(guān)于Python網(wǎng)絡(luò)爬蟲requests庫(kù)的介紹
這篇文章主要介紹了關(guān)于Python網(wǎng)絡(luò)爬蟲requests庫(kù),而很多時(shí)候這些數(shù)據(jù)存儲(chǔ)在網(wǎng)頁(yè)中,手動(dòng)下載需要花費(fèi)的時(shí)間太長(zhǎng),這時(shí)候我們就需要網(wǎng)絡(luò)爬蟲幫助我們自動(dòng)爬取這些數(shù)據(jù),需要的朋友可以參考下2023-04-04

