python的常見錯誤和異常

2021-07-07 07:42:11 字數 1884 閱讀 1818

1 錯誤和異常的概念

錯誤:1)語法錯誤。**不符合直譯器或編譯器語法,在執行前可以修改

2)邏輯錯誤。不完整或不合法輸入(傳遞引數不合法等)或者計算出現問題(比如出現除0操作)。

異常:執行過程中出現問題導致出現沒法執行

出現異常的原因:

1)程式出現邏輯或者演算法問題

2)執行過程中計算機錯誤(記憶體不夠等)

異常的兩個步驟:1 異常產生,檢查到錯誤且直譯器認為是異常,丟擲異常

2 異常處理,截獲異常,忽略或者終止程式處理異常

2 常見錯誤型別

1)ioerror:開啟乙個不存在的檔案(f = open('test.txt'))

2)  valueerror: 強制轉換錯誤(輸入a=int('a100'),會出現該錯誤,表示強制型別轉換時型別無效)

3) nameerror: 變數未定義就被使用

4) syntaxerror: 當輸入if a,回車,顯示錯誤syntaxerror;當輸入if a: print a,顯示nameerror,表示變數a未定義

5)zerodivisionerror: 除0錯誤

3 使用try-except對異常處理

格式:try:

try_suite

except exception [e]:

exception_block

捕獲多個異常的格式:try:

try_suite

except exception1 [e]:

exception_block1

except exception2 [e]:

exception_block2

except exceptionn [e]:

exception_blockn

1)try用來捕獲try_suite裡的錯誤,且將錯誤交給except處理

2)except用來處理異常,如果處理異常和設定捕獲異常一致,就使用exception_block處理異常

否則使用直譯器處理

4 try-finally語句:為異常處理事件提供清理機制,用來關閉檔案或釋放系統資源

格式:try:

try_suite

finally:

do_finally

1) 如果try沒有捕獲錯誤,**執行do_finally語句

2)如果try捕獲到錯誤,程式先執行do_finally,再將捕獲到的錯誤交給python直譯器處理

5 try-except-finally使用

1)若try沒有捕獲異常,執行完try語句後,執行finally語句

2)若try捕獲到異常,執行except語句後再執行finally語句

6 with-as語句

格式:with context [as var]:

with_suite

1) with語句用來代替try-except-finally語句,使**更加簡潔

2)context表示式返回乙個物件

3)var用來儲存context返回物件,單個返回值或元組

4)with_suite使用var變數來對context返回物件進行操作

7 raise語句用於主動丟擲異常

格式raise [exception[ , args]]

exception:異常類

args:字串,描述異常類的元組

8 assert語句:斷言語句,檢測表示式是否為真,如果為假,引發assertionerror錯誤

格式:assert exception [ , args]

exception:表示式

args:判斷條件的描述資訊

9 python標準異常,即內建異常

10 自定義異常:必須繼承exception類,必須主動觸發

python常見錯誤和異常

baseexeception 所有異常的基類 2.systemeixt 直譯器請求退出 3.keyboardinterrupt 使用者中斷執行 4.exception 常規錯誤的基類 5.stopiteration 迭代器沒有更多的值 6.arithmeticerror 所有數值計算錯誤的基類 7....

python常見的異常錯誤顯示

異常 說明nameerror 嘗試訪問乙個沒有宣告的變數 syntaxerror 語法錯誤 zerodivisionerror 除數為0 indexerror 索引超出序列範圍 keyerror 請求乙個不存在的字典關鍵字 ioerror 輸入輸出錯誤 可能讀取的檔案不存在 attributeerr...

python錯誤和異常

1 語法錯誤 syntax errors 語法錯誤,也就是解析時錯誤。當我們寫出不符合python語法 時,在解析時會報syntaxerror,並且會顯示出錯的那一行,並用小箭頭知名指明最早探測到錯誤的位置。如 while ture file line 1 while ture syntaxerro...