python異常處理

2021-09-10 06:36:11 字數 4102 閱讀 2399

寫的有點隨意,今晚剛學的,隨筆做個記錄,^ _ ^

當在執行一段python**時,程式難免會崩掉,比如變數沒有定義,除法分母為0,找不到相應的檔案。。。這時,系統會發出下面這樣的資訊:

# 是什麼型別錯誤,就寫什麼名字

pass

如下面這段**:

try

: answer =5/

0except zerodivesionerror:

print

("出現異常,分母不能為0。。。"

)

當執行時,將輸出:出現異常,分母不能為0。。。

程式沒有崩掉,被異常處理了。

總結:當程式中有多個不同的異常時,可以把多個要捕獲的異常的名字,放到except後,並使用元組的方式進行儲存。

try

: answer =5/

0print

(num)

except

(zerodivisionerror,nameerror)

as result:

print

("出現異常!"

)print

("異常資訊是:"

,result)

result儲存出現異常的資訊

上面說的是可能出現哪種異常,就寫特定的異常名字,當程式**現多種異常,不止兩三個時,這時可以用exception,不管哪種異常,都會捕獲到,所以上面的程式還可寫成:

try

: answer =5/

0print

(num)

except exception as result:

print

("出現異常!"

)print

("異常資訊是:"

,result)

try:.

..except exception as result:..

.else:.

..

else:當沒有捕獲到異常時,執行else

try

: answer =5/

1except zerodivesionerror:

print

("出現異常,分母不能為0。。。"

)else

:print

("沒有異常"

)print

(answer)

# 沒有異常

# 輸出:5

try:.

..except exception as result:..

.else:.

..finally:.

..

finally:在程式中,如果一段**必須要執行,即無論異常是否產生都要執行,那麼此時可以使用finally。比如關閉檔案,釋放鎖,把資料庫連線返回給資料池等。

import time

try:

f =open

('test.txt'

)try

:while

true

: content = f.readline()if

len(content)==0

:break

time.sleep(2)

print

(content)

except exception:

# 當讀取檔案出現異常時,丟擲

pass

finally

: f.close(

)print

('關閉檔案'

)except exception:

# 當檔案不存在時,丟擲異常

print

("沒有這個檔案"

)

import time

try:

f =open

('test.txt'

)try

:while

true

: content = f.readline()if

len(content)==0

:break

time.sleep(2)

print

(content)

except exception:

# 當讀取檔案出現異常時,丟擲

pass

finally

: f.close(

)print

('關閉檔案'

)except exception:

# 當檔案不存在時,丟擲異常

print

("沒有這個檔案"

)

def

test1()

:print

("test1-1"

)print

(num)

print

("test1-2"

)def

test2()

:print

("test2-1"

) test1(

)print

("test2-2"

)def

test3()

:try

:print

("test3-1"

) test2(

)print

("test3-2"

)except exception as result:

print

("捕獲到了異常,異常資訊:"

,result)

print

("test3-2"

)test3(

)print

("沒有找到異常處理時,返回python直譯器,程式崩掉"

)test2(

)

輸出資訊:

這段**中,執行順序為:

test3() -> test2() -> test1() 出現異常,返回 test2(),沒有找到異常處理,接著返回test3(),做異常處理。

當test2()返回也沒有找到異常處理時,會直接拋給python直譯器,程式崩掉!!

class

test

(object):

def__init__

(self,switch)

: self.switch = switch # 開關

defcalc

(self,a,b)

:try

:return a/b

except exception as e:

if self.switch:

print

("捕獲開啟,已經捕獲到了異常,錯誤資訊是:"

)print

(e)else

:# 重新丟擲這個異常,此時不會被這個異常處理給捕獲,直接拋給python 直譯器

raise

a = test(

true

)a.calc(5,

0)print

("--------------------"

)a.switch =

false

a.calc(5,

0)

分割線前,程式執行,出現了異常,拋給了異常處理;

分割線後,程式執行,出現了異常,但switch是false,無法被異常處理,執行else,拋給了系統處理,程式崩掉!

python異常處理 Python 異常處理

使用者輸入不完整 比如輸入為空 或者輸入非法 輸入不是數字 異常就是程式執行時發生錯誤的訊號,在python中,錯誤觸發的異常如下 在python中不同的異常可以用不同的型別 python中統一了類與型別,型別即類 去標識,不同的類物件標識不同的異常,乙個異常標識一種錯 觸發indexerror 觸...

python異常舉例 Python異常處理

1.1異常問題舉例 例一 i input 請輸入數字 請輸入數字 0 print i print 5 int i traceback most recent call last file line 1,in zerodivisionerror division by zero 上述 的報錯是除零的錯...

python異常處理

當你的程式中出現異常情況時就需要異常處理。比如當你開啟乙個不存在的檔案時。當你的程式中有一些無效的語句時,python會提示你有錯誤存在。下面是乙個拼寫錯誤的例子,print寫成了print。python是大小寫敏感的,因此python將引發乙個錯誤 print hello world file l...