1 異常簡介
看如下示例:
print("-------test begin--------")
f = open("123.txt", "r") #用唯讀模式開啟乙個不存在的檔案,會報錯
開啟乙個不存在的檔案123.txt,當找不到123.txt 檔案時,就會丟擲給我們乙個ioerror型別的錯 誤,no such file or directory:123.txt (沒有123.txt這樣的檔案或目錄)
異常: 當python檢測到乙個錯誤時,直譯器就無法繼續執行了,反而出現了一些錯誤的提示,這就是所 謂的"異常"
2 捕獲異常 try...except...
try:
print("-------test begin--------")
f = open("123.txt","r")
f.close()
print("-------test over--------")
except ioerror: #檔案沒找到屬於io異常,輸入輸出異常
pass #捕獲異常後,執行的**
➢此程式看不到任何錯誤,因為用except 捕獲到了ioerror異常,並新增了處理的方法
➢pass 表示實現了相應的實現,但什麼也不做;如果把pass改為print語句,那麼就會輸出其他資訊
➢把可能出現問題的**,放在try中
➢把處理異常的**,放在except中
3 except捕獲多個異常
try:
print(num)
f = open("123.txt", "r")
except (nameerror,ioerror): #將可能產生的所有異常型別,都放在下面的小括號中
print("產生錯誤了......") #捕獲異常後,執行的**
當捕獲多個異常時,可以把要捕獲的異常的名字,放到except 後,並使用元組的方式僅進行儲存。4 獲取異常的資訊描述
try:
f = open("test.txt", "r")
print(num)
except (nameerror,ioerror) as result: #將可能產生的所有異常型別,都放在下面的小括號中
print("產生錯誤了......") #捕獲異常後,執行的**
print(result) #列印錯誤資訊
當捕獲多個異常時,可以把要捕獲的異常的名字,放到except 後,並使用元組的方式僅進行儲存。但是只對第乙個異常報錯。5 捕獲所有異常
try:
f = open("123.txt", "r")
print(num)
except exception as result: #exception表示可以承接所有異常型別,
print("產生錯誤了......") #捕獲異常後,執行的**
print(result) #列印錯誤資訊
try...finally...語句用來表達這樣的情況:
在程式中,如果乙個段**必須要執行,即無論異常是否產生都要執行,那麼此時就需要使用 finally。 比如檔案關閉,釋放鎖,把資料庫連線返還給連線池等。
import time
try:
f = open("test.txt","r")
try:
while true:
context = f.readline()
if len(context)==0:
break
time.sleep(2)
print(context)
finally: #一定會被執行
f.close()
print("檔案關閉")
except exception as result:
print("發生異常:%s"%result)
test.txt檔案中每一行資料列印,但是我有意在每列印一行之前用time.sleep方法暫停2秒鐘。這樣 做的原因是讓程式執行得慢一些。在程式執行的時候,按ctrl+c中斷(取消)程式。
我們可以觀察到keyboardinterrupt異常被觸發,程式退出。但是在程式退出之前,finally從句仍 然被執行,把檔案關閉。
Python學習06 錯誤與異常
for i in range 10 print i 輸出 for i in range 10 syntaxerror invalid syntaxpython的語法分析器完成,檢測到錯誤所在檔案和行號。以向上箭頭標記錯誤位置。最後顯示錯誤型別。當程式檢測到錯誤,直譯器就無法繼續執行下去,丟擲異常,終...
python 錯誤與異常
錯誤在執行前修改,邏輯錯誤無法修改 執行時,異常產生,檢查到錯誤且直譯器認為是異常,丟擲異常 異常處理,截獲異常,忽略或者終止程式處理異常 try try suite except exception e exception blocktry aexcept nameerror,e print ca...
python 錯誤與異常
開發人員在編寫程式的時候難免會遇到錯誤,那遇到錯誤要如何找到錯誤並處理異常呢?本篇主要實現異常的處理方法。一 錯誤分類 1.語法錯誤 syntaxerror 2.執行時錯誤 這種包括很多異常的型別,eg nameerror zerodivisionerror等 二 異常處理的基本語法 try 執行 ...