Python基礎之異常相關知識

2021-10-09 05:31:51 字數 3730 閱讀 7908

當檢測到乙個錯誤時,直譯器就無法繼續執行了,反而出現了一些錯誤的提示,這就是所謂的"異常"。

例如:以r方式開啟乙個不存在的檔案。

open

('test.txt'

,'r'

)

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-0agjxwza-1597499385910)(01-異常.assets/image-20190305154200725.png)]

try

: 可能發生錯誤的**

except

: 如果出現異常執行的**

需求:嘗試以r模式開啟檔案,如果檔案不存在,則以w方式開啟。

try

: f =

open

('test.txt'

,'r'

)except

: f =

open

('test.txt'

,'w'

)

try

: 可能發生錯誤的**

except 異常型別:

如果捕獲到該異常型別執行的**

try

:print

(num)

except nameerror:

print

('有錯誤'

)

注意:

如果嘗試執行的**的異常型別和要捕獲的異常型別不一致,則無法捕獲異常。

一般try下方只放一行嘗試執行的**。

當捕獲多個異常時,可以把要捕獲的異常型別的名字,放到except 後,並使用元組的方式進行書寫。

try

:print(1

/0)except

(nameerror, zerodivisionerror)

:print

('有錯誤'

)

try

:print

(num)

except

(nameerror, zerodivisionerror)

as result:

print

(result)

exception是所有程式異常類的父類。

try

:print

(num)

except exception as result:

print

(result)

else表示的是如果沒有異常要執行的**。

try

:print(1

)except exception as result:

print

(result)

else

:print

('我是else,是沒有異常的時候執行的**'

)

finally表示的是無論是否異常都要執行的**,例如關閉檔案。

try

: f =

open

('test.txt'

,'r'

)except exception as result:

f =open

('test.txt'

,'w'

)else

:print

('沒有異常,真開心'

)finally

: f.close(

)

體驗異常傳遞

需求:​ 1. 嘗試唯讀方式開啟test.txt檔案,如果檔案存在則讀取檔案內容,檔案不存在則提示使用者即可。

​ 2. 讀取內容要求:嘗試迴圈讀取內容,讀取過程中如果檢測到使用者意外終止程式,則except捕獲異常並提示使用者。

import time

try:

f =open

('test.txt'

)try

:while

true

: content = f.readline()if

len(content)==0

:break

time.sleep(2)

print

(content)

except

:# 如果在讀取檔案的過程中,產生了異常,那麼就會捕獲到

# 比如 按下了 ctrl+c

print

('意外終止了讀取資料'

)finally

: f.close(

)print

('關閉檔案'

)except

:print

("沒有這個檔案"

)

在python中,拋出自定義異常的語法為raise 異常類物件

需求:密碼長度不足,則報異常(使用者輸入密碼,如果輸入的長度不足3位,則報錯,即拋出自定義異常,並捕獲該異常)。

# 自定義異常類,繼承exception

class

shortinputerror

(exception)

:def

__init__

(self, length, min_len)

: self.length = length

self.min_len = min_len

# 設定丟擲異常的描述資訊

def__str__

(self)

:return f'你輸入的長度是, 不能少於個字元'

defmain()

:try

: con =

input

('請輸入密碼:')if

len(con)

<3:

raise shortinputerror(

len(con),3

)except exception as result:

print

(result)

else

:print

('密碼已經輸入完成'

)main(

)

try

: 可能發生異常的**

except

: 如果出現異常執行的**

else

: 沒有異常執行的**

finally

: 無論是否異常都要執行的**

except 異常型別:

**except 異常型別 as xx:

**

# 1. 自定義異常類

class 異常類類名(exception)

: **

# 設定丟擲異常的描述資訊

def__str__

(self)

:return..

.# 2. 丟擲異常

raise 異常類名(

)# 捕獲異常

except exception.

..

python基礎知識之異常處理

異常處理 提前先將可能會引起錯誤的 放入到捕獲異常 塊當中,一旦發生錯誤,不會影響後續 的執行 try list 1,2,3,4,5 print list 100 dic print dic age except keyerror as e print 捕獲了乙個key值錯誤,請仔細檢查key值 e...

python基礎之異常

語法 try 嘗試執行的 except 出現錯誤的處理 try 嘗試執行的 except 錯誤型別1 針對錯誤型別1,對應的 處理 except 錯誤型別2,錯誤型別3 針對錯誤型別2和3,對應的 處理 except exception as result print 未知錯誤 s result e...

python基礎之異常

print hello try try中放置的是有可能出現錯誤的 print 10 0 except except中放置的是出錯以後的處理防暑 print 哈哈哈,出錯了 else print 程式正常執行沒有錯誤 print 你好 print 10 0 def fn print hello fn ...