python異常與錯誤學習

2021-10-09 09:46:16 字數 2946 閱讀 5582

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 執行 ...