10 Python中的錯誤和異常

2021-08-15 16:40:45 字數 4291 閱讀 1382

異常是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.編輯...