Python學習 異常處理

2021-09-06 08:56:23 字數 3933 閱讀 9069

assertionerror:斷言語句失敗

# assertionerror:斷言語句失敗,一般是在測試程式時置入檢查點

my_list =

['love'

]my_list.pop(

)assert

len(my_list)

>

0 traceback (most recent call last)

: file ""

, line 1,in

assertionerror

# attributeerror:嘗試訪問未知的物件屬性,訪問不存在時丟擲的異常

attributeerror:嘗試訪問未知的物件屬性

traceback (most recent call last)

: file ""

, line 1,in

attributeerror:

'list'

object has no attribute 'dog'

indexerror:索引超出序列的範圍

my_list=[1

,2,3

]my_list[3]

#丟擲的異常

traceback (most recent call last)

: file ""

, line 1,in

indexerror:

list index out of range

keyerror:字典中查詢乙個不存在的關鍵字

my_dict =

my_dict[

'four'

]#丟擲的異常:

traceback (most recent call last)

: file ""

, line 1,in

keyerror:

'four'

nameerror:嘗試訪問乙個不存在的變數

# nameerror:嘗試訪問乙個不存在的變數時,丟擲的異常

traceback (most recent call last)

: file ""

, line 1,in

nameerror: name 'c'

isnot defined

oserror:作業系統產生的異常

# oserror:作業系統產生的異常,也稱為filenotfounderror

filenotfounderror:

[errno 2

]

syntaxerror:python的語法錯誤

# syntaxerror:python的語法錯誤

syntaxerror: invalidsyntax

zerodivisionerror:除數為零

typeerror:不同型別間的無效操作

1

+'2'

#丟擲的異常

typeerror: unsupported operand type

(s)for+:

'int'

and'str'

try-except語句

#格式

try:

檢測範圍

except exception[

as reason]

: 出現異常後的處理**

#示例

try:

sum1 =1+

'1' f =

open

('none.txt'

)print

(f.read())

f.close(

)except oserror as reason:

print

('檔案出錯t_t\n出錯的原因是:'

+str

(reason)

)# 對多個異常統一處理

except

(oserror,typeerror)

:print

('檔案出錯t_t'

)# 當無法確定對哪一類異常進行處理時,只是希望在try語句裡一旦出現任何異常,給使用者乙個看得懂的提醒..

.except

:print

('出錯了').

..# try語句裡一旦出下異常,剩下的語句將不會執行

如果希望在 except 子句中訪問異常物件本身,可以使用兩個引數(注意:就算要捕捉到多個異常,也只需要向 except 子句提供乙個引數-元祖)

try-finally 語句

# 如果try語句中沒有出現錯誤,則語句會跳過except語句塊執行finally語句塊中的內容,若出現異常,則執行except然後執行finally

try:

f =open

('不存在的文件'

)print

(f.read())

sum=1+

'1'except

:print

('出錯了!t_t'

)# finally 語句塊中的內容是無論如何都要執行的

finally

: f.close(

)

else語句不僅能和if語句搭配,而且也能和for語句或者while語句搭配

# 求使用者輸入的數的最大約數,若是素數則提醒使用者

defshowmaxfactor

(num)

:# 地板除法:兩個整數的除法仍然是整數:

count = num //

2while count >1:

if num % count ==0:

print

('%d 最大的約數是 %d'

%(num,count)

)break

count -=

1# 如果沒有遇到合適的條件,則執行else的語句內容

else

:print

('%d 是素數!'

%num)

num =

int(

input

('請輸入乙個數:'))

showmaxfactor(num)

# else 語句可以與異常搭配使用,如果try語句中沒有異常,則執行else中語句

try:

a =1except valueerror as reason:

print

('出錯了!'

+str

(reason)

)else

:print

('沒有任何異常'

)

# 對檔案操作使用with語句,不用擔心出現檔案開啟了忘記關閉的問題(with會自動幫助關閉檔案)

try:

with

open

('文字.txt'

,'r'

,encoding=

'utf-8'

)as f:

for each_line in f:

print

(each_line)

except oserror as reason:

print

("出錯了t_t\n出錯的原因是:"

+str

(reason)

)

python學習 異常處理

class myerror exception definit self,msg self.msg msg defstr self return str self.msg 777 try 檢測try語句塊中的錯誤 print 2 0 raise myerror 主動丟擲錯誤 except myerr...

python學習 異常處理

這次的學習內容是異常處理,簡單的說就是python內建了異常檢測機制,能夠識別出類似除數為0 開啟檔案失敗這一類錯誤。因此,就可以用try except 對可能出現的錯誤進行預判,從而讓程式避開錯誤段繼續執行下去。這篇blog不準備列舉各種異常型別 它們將作為 try except 中except後...

python學習 異常處理

小技巧 isinstance obj,foo 檢查是否obj是否是類 foo 的物件 class foo object pass obj foo isinstance obj,foo issubclass sub,super 檢查sub類是否是 super 類的派生類 class foo objec...