本文結(jié)構(gòu):
1、常見錯(cuò)誤總結(jié)
2、try except方法
一、常見錯(cuò)誤總結(jié)
- AttributeError 試圖訪問一個(gè)對(duì)象沒有的樹形,比如foo.x,但是foo沒有屬性x
- IOError 輸入/輸出異常;基本上是無法打開文件
- ImportError 無法引入模塊或包;基本上是路徑問題或名稱錯(cuò)誤
- IndentationError 語法錯(cuò)誤(的子類) ;代碼沒有正確對(duì)齊
- IndexError 下標(biāo)索引超出序列邊界,比如當(dāng)x只有三個(gè)元素,卻試圖訪問x[5]
- KeyError 試圖訪問字典里不存在的鍵
- KeyboardInterrupt Ctrl+C被按下
- NameError 使用一個(gè)還未被賦予對(duì)象的變量
- SyntaxError Python代碼非法,代碼不能編譯(個(gè)人認(rèn)為這是語法錯(cuò)誤,寫錯(cuò)了)
- TypeError 傳入對(duì)象類型與要求的不符合
-
UnboundLocalError 試圖訪問一個(gè)還未被設(shè)置的局部變量,基本上是由于另有一個(gè)同名的全局變量,
導(dǎo)致你以為正在訪問它 - ValueError 傳入一個(gè)調(diào)用者不期望的值,即使值的類型是正確的
二、try except方法
有時(shí)候我們寫程序的時(shí)候,會(huì)出現(xiàn)一些錯(cuò)誤或異常,導(dǎo)致程序終止,這個(gè)時(shí)候我們需要捕獲錯(cuò)誤的類型,讓代碼更靈活,下面介紹下常用的try except來進(jìn)行捕獲異常的方法。
- 處理單個(gè)異常:
- 語法:
>>
>
try
:
>>
>
code
>>
>
except
Error1
as
e
:
#處理Error1異常
>>
>
print
(
e
)
- demo
>>
>
try
:
>>
>
print
(
5
/
0
)
#該行為測試的語句
>>
>
except
ZeroDivisionError
as
e
:
## 如果測試的語句出現(xiàn)except后的異常(例中的ZeroDivisionError),則執(zhí)行下一行代碼,否則跳過此模塊
>>
>
print
(
e
)
## 打印錯(cuò)誤名稱
division by zero
##執(zhí)行結(jié)果
- 分開處理多個(gè)異常:
- 語法
>>
>
try
:
>>
>
code
>>
>
except
Error1
as
e
:
#處理Error1異常
>>
>
print
(
e
)
>>
>
except
Error2
as
e
:
#處理Error2異常
>>
>
print
(
e
)
- demo
>>
>
a
=
[
0
,
1
]
>>
>
try
:
>>
>
print
(
a
[
3
]
)
>>
>
print
(
5
/
0
)
##語句在上一行就遇到錯(cuò)誤傳到except里面去了,未檢測到此語句
>>
>
except
ZeroDivisionError
as
e
:
#處理Error1異常
>>
>
print
(
e
)
>>
>
except
IndexError
as
e
:
#處理Error2異常
>>
>
print
(
e
)
list
index out of
range
- 統(tǒng)一處理多個(gè)異常:
- 語法
>>
>
try
:
>>
>
code
>>
>
except
(
Error1
,
Error
)
:
###無論遇到什么異常,都只會(huì)執(zhí)行下一行要打印的一種東西
>>
>
print
(
e
)
- 沒有異常,則走else部分的邏輯代碼
- 語法:
>>
>
try
:
>>
>
code
>>
>
except
(
Error1
,
Error2
,
.
.
.
)
as
e
:
>>
>
print
(
e
)
>>
>
else
:
>>
>
print
(
"沒有錯(cuò)誤,執(zhí)行"
)
- demo
>>
>
try
:
>>
>
print
(
5
/
1
)
>>
>
except
ZeroDivisionError
as
e
:
>>
>
print
(
e
)
>>
>
else
:
>>
>
print
(
"沒有錯(cuò)誤"
)
沒有錯(cuò)誤
-
不管有沒有錯(cuò)誤,都會(huì)執(zhí)行finnally中的代碼
例如在對(duì)文件進(jìn)行操作時(shí)候,如果文件讀寫過程中出現(xiàn)錯(cuò)誤,無法關(guān)閉,可以將f.close()放在finally中,這樣無論是否有錯(cuò)誤,文件都會(huì)關(guān)閉
>>
>
try
:
>>
>
code
>>
>
except
(
Error1
,
Error2
,
.
.
.
)
as
e
:
>>
>
print
(
e
)
>>
>
else
:
>>
>
print
(
"沒有錯(cuò)誤,執(zhí)行"
)
>>
>
finnally
:
>>
>
print
(
"不管有沒有錯(cuò),都執(zhí)行finnally"
)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
