當檢測到乙個錯誤時,直譯器就無法繼續執行了,反而出現了一些錯誤的提示,這就是所謂的"異常"。
例如:以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
('有錯誤'
)
注意:當捕獲多個異常時,可以把要捕獲的異常型別的名字,放到except 後,並使用元組的方式進行書寫。如果嘗試執行的**的異常型別和要捕獲的異常型別不一致,則無法捕獲異常。
一般try下方只放一行嘗試執行的**。
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 ...