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

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