異常是python程式在執行中引發的錯誤。如果程式中發生了未進行處理的異常,指令碼就會由於異常而終止執行;只有捕獲這些異常,並進行相關處理,才能使程式不會中斷執行;
python中使用try方法處理異常,一般的try語句基本形式如下:
try:
《語句(塊)> # 可能產生異常的語句(塊)
except
《異常名1>: # 要處理的異常
《語句(塊)> # 異常處理語句
except
《異常名2>:
《語句(塊)>
else:
《語句(塊)> # 未觸發異常則執行該語句(塊)
finally:
《語句(塊)> # 始終執行該語句
常用的形式有如下兩種形式:
形式一:
try:
《語句(塊)> # 可能產生異常的語句(塊)
except
《異常名1>: # 要處理的異常
《語句(塊)> # 異常處理語句
形式二:
try:
《語句(塊)> # 可能產生異常的語句(塊)
except
《異常名1>: # 要處理的異常
《語句(塊)> # 異常處理語句
finally:
《語句(塊)> # 始終執行該語句
try方法處理異常示例:
def
tryfunction
(n):
lst = [1, 2, 3, 4, 5]
try:
a = lst[n]
except indexerror:
return
'index error'
else:
return a
print(tryfunction(2))
print(tryfunction(12))
執行結果:
3 index error
在互動環境中,使用dir(__builtins__)命令,就會顯示出所有的預定義異常;常見的異常定義如下表所示:
異常名描述
attributeerror
呼叫不存在的方法引起異常
eoferror
遇到檔案默尾引發的異常
importerror
匯入模組出錯引發的異常
indexerror
列表越界引發的異常
ioerror
i/o操作引發的異常,如開啟檔案出錯
keyerror
使用字典不存在的關鍵字引發的異常
nameerror
使用不存在的變數名引發的異常
taberror
語句塊縮排不正確引發的異常
valueerror
搜尋列表中不存在的值引發的異常
zerodivisionerror
除數為0引發的異常
except語句主要用法有一下幾種:
except示例:def
testexcept
(index, i):
lst = [1, 2, 3, 4, 5]
try:
result = lst[index] / i
except:
print('error!')
else:
print('the result is', result)
testexcept(2, 2)
testexcept(2, 0)
testexcept(12, 0)
執行結果:
the result is 1.5
error!
error!
使用raise丟擲異常的方式有如下幾種:
raise丟擲異常示例:def
testexcept
(index, i):
lst = [1, 2, 3, 4, 5]
if len(lst) <= index:
raise indexerror
else:
print('the result is', lst[index])
''' except indexerror:
print('index error!')
else:
print('the result is', result)
'''#testexcept(2, 2)
testexcept(5, 2)
執行結果:
traceback (most recent call last):
file 「g:\work\python\01python爬蟲基礎\posttest.py」, line 33, in
testexcept(5, 2)
file 「g:\work\python\01python爬蟲基礎\posttest.py」, line 21, in testexcept
raise indexerror
indexerror
處理raise手工丟擲的異常示例:
def
testexcept
(index, i):
lst = [1, 2, 3, 4, 5]
try:
if len(lst) <= index:
raise indexerror
except indexerror:
print('index error!')
else:
print('the result is', lst[index])
testexcept(2, 2)
testexcept(5, 2)
執行結果:
the result is 3
index error!
assert語句的一般形式如下:
assert《條件測試》,《異常附加資料》assert語句示例:
def
testassert
(i):
try:
assert i < 2
# 當 i >= 2時丟擲異常assertionerror
except assertionerror:
print('assertion error!')
else:
print('i is', i)
testassert(1)
testassert(2)
執行結果:
i is 1
assertion error!
自定義異常示例:class
myexception
(exception):
def__init__
(self, value):
self.value = value;
def__str__
(self):
return self.value
raise myexception('myself exception!')
執行結果:
traceback (most recent call last):
file 「g:\work\python\01python爬蟲基礎\posttest.py」, line 24, in
raise myexception(『myself exception!』)
__main__.myexception: myself exception!
10 python中的requests應用
使用request方便 coding utf 8 created on 2018年7月14日 author sss import requests import json 根據協議型別選擇不同的 proxies headers formdata url url 要把 o去掉 response req...
python學習筆記 (10)python中的詞典
1 詞典的基本概念和建立 python中的詞典是乙個類,詞典是用來儲存多個元素的,儲存多個元素的物件稱作容器 container 建立詞典的方法舉例 dic print type dic print dic jack 注 1 由例可見,詞典和表很相似,都是可以包含多個元素的類,元素均以逗號來分隔,學...
10 Python程式的編輯和執行
1.編輯 2.執行互動模式下,每寫好一行 後,直接回車,就可以立即執行 因為解釋型語言是 逐句解釋執行,所以這是可以做以上操作的原理3.適用場景簡單的語句學習 乙個簡單的演算法程式或功能 其實都已經不適用了4.缺點1.編輯 2.執行 3.適用場景比較簡單的程式開發 涉及檔案不多的場景4.缺點1.編輯...