1. 程式人生 > 其它 >【基礎10】【自學筆記】python錯誤異常處理

【基礎10】【自學筆記】python錯誤異常處理

一、如何丟擲異常?

異常的產生有兩種來源:

  • 一種是程式自動丟擲,比如1/0會自動丟擲 ZeroDivisionError

  • 一種是開發者主動丟擲,使用raise關鍵字丟擲。

示例:

def demo_func(filename):
    if not os.path.isfile(filename):
        raise Exception

  

二.常見異常總結

1.SynataxError:語法錯誤

解決方法:

①檢視程式碼有沒有紅色波浪線

②熟悉python基本語法

  

2.NameError:試圖訪問的變數名不存在

解決方法:

①檢查對應的變數名是否有定義並賦值,是否寫錯了變數名稱

  

3.IndexError:索引錯誤,使用的所以你不存在,常為索引超出序列範圍

解決方法:

①檢查lis物件索引選擇是否超出了本來的長度

  

4.KeyError:使用了對映中不存在的關鍵字(鍵)時引發的關鍵字錯誤

解決方法:

①檢查字典裡是否存在這個key值

  

5.TypeError:型別錯誤,內建操作或是函式應於在錯誤型別的物件時會引發型別錯誤

解決方法:

①檢查清楚資料型別是否有誤

  

6.ValueError:值錯誤,傳給物件的引數型別不正確,例如給int()函式傳入了字串資料型別

解決方法:

①弄清楚形參的資料型別

②再傳對應形參的資料型別

  

7.AttributeError:屬性錯誤,特性引用和賦值失敗時會引發屬性錯誤

解決方法:

①檢查類裡是否存在這個被呼叫的方法

②一般不能自動匹配出方法的多半有問題

  

8.IOError:輸入輸出錯誤

解決方法:

①找到程式碼中關於輸入輸出的相關操作

②檢查檔案路徑和名稱對不對

  

異常不侷限於以上八中,這只是很常見的八種異常

三、丟擲異常的幾種方式?

1.try...except組合語法

(1)程式碼:

try:

  正常的操作

except:

  發生異常,執行這塊程式碼

try:
    f=open("d:\\test.txt","r")
    f.read()
    print("檔案讀寫錯誤")
except IOError:
    print("IO讀寫出錯")

2.try...except...else組合語法

(1)程式碼:

try:

  正常的操作

except:

  發生異常,執行這塊程式碼

else:

  如果沒有異常,執行這塊程式碼

try:
    f=open("d:\\test.txt","r")
    f.read()
    print("檔案讀寫錯誤")
except IOError:
    print("IO讀寫出錯")
else:
    print("檔案寫入成功")

3.try...except...except(多個異常處理)

(1)程式碼:

try:

  正常的操作

except A:

  發生異常A,執行這塊程式碼

except B:

  發生異常B,執行這塊程式碼

except:

  發生其它異常,執行這塊程式碼

else:

  如果沒有異常,執行這塊程式碼

try:
    f=open("d:\\test.txt","r")
    f.read()
    print("檔案讀寫錯誤")
except IOError:
    print("IO讀寫出錯")
except:
    print("其他未知異常")
else:
    print("檔案寫入成功")

4.try...except(A,B)(一次捕獲多個異常)

(1)程式碼:

try:

  正常的操作

except(A,B):

  發生異常A和B,執行這塊程式碼

try:
    f=open("d:\\test.txt","r")
    f.read()
    print("檔案讀寫錯誤")
except (IOError,TypeError):
    print("讀取檔案時出現異常")

else:
    print("檔案寫入成功")

5、try...except...finally組合語法

(1)程式碼:

try:
    程式碼A
except [exception] as e:
    程式碼B
finally:
    程式碼C
>>> try:
...     1/0
... except ZeroDivisionError as e:
...     print("發生了異常:錯誤資訊如下: \n" + str(e))
... finally:
...     print("程式執行結束!!")
...
發生了異常:錯誤資訊如下:
integer division or modulo by zero
程式執行結束!!

  

萬能異常處理:-所有的異常都繼承Exception

try:
    f=open("d:\\test.txt","r")
    f.read()
    print("檔案讀寫錯誤")
except Exception as e:
    print("讀取檔案時出現異常")
    print("e的內容"+str(e))

else:
    print("檔案寫入成功")

四、異常處理的三個好習慣?

奔跑的蝸牛