Python十類常見(jiàn)異常類型總結(jié)(附捕獲及異常處理方式)
前言
今天給大家講講我們剛開(kāi)始寫(xiě)代碼是都會(huì)出現(xiàn)的問(wèn)題-我們剛開(kāi)始常見(jiàn)的異常以及處理方法!
異常是指在程序運(yùn)行過(guò)程中出現(xiàn)的錯(cuò)誤或異常情況,例如除以0、訪問(wèn)不存在的變量等。Python提供了一些內(nèi)置的異常類型,同時(shí)也支持自定義異常類型。
十類異常
1.TypeError
當(dāng)操作或函數(shù)應(yīng)用于不適當(dāng)類型的對(duì)象時(shí)引發(fā)。
例如:
a = 5 + '10'
這個(gè)例子中,我們?cè)噲D將整數(shù)5和字符串’10’相加,這是不允許的,因?yàn)樗鼈兪遣煌念愋汀?/p>
2.ValueError
當(dāng)函數(shù)或操作的參數(shù)具有正確的類型但不合法時(shí)引發(fā)。
例如:
int('abc')這個(gè)例子中,我們?cè)噲D將字符串’abc’轉(zhuǎn)換為整數(shù),但是’abc’不是一個(gè)有效的整數(shù),因此會(huì)引發(fā)ValueError異常。
3.NameError
當(dāng)嘗試訪問(wèn)一個(gè)未定義的變量時(shí),會(huì)拋出NameError異常。
例如:
print(x)
這個(gè)例子中,我們嘗試打印變量x的值,但是x沒(méi)有被定義,因此會(huì)引發(fā)NameError異常。
4.IndexError
當(dāng)嘗試訪問(wèn)列表、元組或字符串中不存在的索引時(shí)引發(fā)。
例如:
a = [1, 2, 3] print(a[3])
這個(gè)例子中,我們?cè)噲D訪問(wèn)列表a的第四個(gè)元素,但是a只有三個(gè)元素,因此會(huì)引發(fā)IndexError異常。
5.KeyError
當(dāng)嘗試訪問(wèn)字典中不存在的鍵時(shí)引發(fā)。
例如:
d = {'a': 1, 'b': 2}
print(d['c'])這個(gè)例子中,我們?cè)噲D訪問(wèn)字典d中不存在的鍵’c’,因此會(huì)引發(fā)KeyError異常。
6.ZeroDivisionError
當(dāng)嘗試除以零時(shí)引發(fā)。
例如:
a = 5 / 0
這個(gè)例子中,我們?cè)噲D將5除以0,這是不允許的,因?yàn)槌龜?shù)不能為零,因此會(huì)引發(fā)ZeroDivisionError異常。
7.IOError
當(dāng)嘗試讀取不存在的文件或無(wú)法訪問(wèn)文件時(shí)引發(fā)。
例如:
f = open('nonexistent_file.txt', 'r')這個(gè)例子中,我們?cè)噲D打開(kāi)一個(gè)不存在的文件nonexistent_file.txt,因此會(huì)引發(fā)IOError異常。
8.ImportError
當(dāng)嘗試導(dǎo)入不存在的模塊或包時(shí)引發(fā)。
例如:
import nonexistent_module
這個(gè)例子中,我們?cè)噲D導(dǎo)入一個(gè)不存在的模塊nonexistent_module,因此會(huì)引發(fā)ImportError異常。
9.AttributeError
當(dāng)嘗試訪問(wèn)對(duì)象不存在的屬性時(shí)引發(fā)。
例如:
s = 'hello' print(s.uppercase())
這個(gè)例子中,我們?cè)噲D調(diào)用字符串s的不存在的方法uppercase(),因此會(huì)引發(fā)AttributeError異常。
10.KeyboardInterrupt
當(dāng)用戶中斷程序執(zhí)行時(shí)引發(fā)。
例如:
while True:
try:
x = input('Enter a number: ')
break
except KeyboardInterrupt:
print('You pressed Ctrl+C!')這個(gè)例子中,我們?cè)谝粋€(gè)無(wú)限循環(huán)中等待用戶輸入一個(gè)數(shù)字,但是如果用戶按下Ctrl+C,程序會(huì)引發(fā)KeyboardInterrupt異常,我們可以捕獲這個(gè)異常并打印一條消息。
異常捕獲以及處理
在Python中,可以使用try-except語(yǔ)句來(lái)捕獲異常并進(jìn)行處理。try語(yǔ)句塊中包含可能會(huì)出現(xiàn)異常的代碼,如果出現(xiàn)異常,則會(huì)跳轉(zhuǎn)到except語(yǔ)句塊中進(jìn)行處理。可以使用多個(gè)except語(yǔ)句塊來(lái)處理不同類型的異常,也可以使用一個(gè)except語(yǔ)句塊來(lái)處理所有類型的異常。
例如:
try:
x = 1 / 0
except ZeroDivisionError:
print("除以0錯(cuò)誤")除了使用內(nèi)置的異常類型,還可以自定義異常類型。自定義異常類型通常繼承自Exception類或其子類。例如:
class MyException(Exception):
pass
try:
raise MyException("自定義異常")
except MyException as e:
print(e)在Python中,還可以使用finally語(yǔ)句塊來(lái)定義無(wú)論是否出現(xiàn)異常都需要執(zhí)行的代碼。例如:
try:
x = 1 / 0
except ZeroDivisionError:
print("除以0錯(cuò)誤")
finally:
print("finally語(yǔ)句塊")總結(jié)
以上是Python中常見(jiàn)的異常類型和異常處理方法。在編寫(xiě)程序時(shí),應(yīng)該盡可能地避免出現(xiàn)異常情況,同時(shí)也應(yīng)該合理地處理可能出現(xiàn)的異常。
到此這篇關(guān)于Python十類常見(jiàn)異常類型總結(jié)的文章就介紹到這了,更多相關(guān)Python十類異常類型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用grpc服務(wù)并與C++互相調(diào)用
這篇文章主要為大家詳細(xì)介紹了gRPC的安裝與使用,包括使用pip安裝相關(guān)組件,并和C++互相調(diào)用gRPC服務(wù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2025-12-12
python實(shí)現(xiàn)實(shí)時(shí)監(jiān)控文件的方法
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)實(shí)時(shí)監(jiān)控文件的3種方法,感興趣的小伙伴們可以參考一下2016-08-08
Python實(shí)現(xiàn)線性擬合及繪圖的示例代碼
在數(shù)據(jù)處理和繪圖中,我們通常會(huì)遇到直線或曲線的擬合問(wèn)題,本文主要介紹了Python實(shí)現(xiàn)線性擬合及繪圖的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04
使用Python進(jìn)行二進(jìn)制文件讀寫(xiě)的簡(jiǎn)單方法(推薦)
下面小編就為大家?guī)?lái)一篇使用Python進(jìn)行二進(jìn)制文件讀寫(xiě)的簡(jiǎn)單方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09
Python中zip()函數(shù)的簡(jiǎn)單用法舉例
這篇文章主要給大家介紹了關(guān)于Python中zip()函數(shù)的簡(jiǎn)單用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
Python?Decorator的設(shè)計(jì)模式演繹過(guò)程解析
本文主要梳理了Python?decorator的實(shí)現(xiàn)思路,解釋了為什么Python?decorator是現(xiàn)在這個(gè)樣子,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
Pandas.DataFrame重置Series的索引index(reset_index)
本文主要介紹了Pandas.DataFrame重置Series的索引index(reset_index),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02

