Python入門筆記 錯誤與異常

2021-10-24 01:19:41 字數 2768 閱讀 6147

作為 python 初學者,在剛學習 python 程式設計時,經常會看到一些報錯資訊。python 有兩種錯誤很容易辨認:語法錯誤和異常。

語法錯誤又稱解析錯誤,是在學習python 時最容易遇到的錯誤:

while

true

print

('hello world'

)'''

file "/users/clay/desktop/python/demo.py", line 1

while true

^syntaxerror: invalid syntax

'''

這個例子指出true後面少了乙個冒號:,解析器會輸出出現語法錯誤的那一行,並顯示乙個「箭頭」,指向這行裡面檢測到第乙個錯誤,檔名和行號也會被輸出,以便輸入來自指令碼檔案時你能知道去哪檢查。

即使語句或表示式在語法上是正確的,但在嘗試執行時,它仍可能會引發錯誤。 在執行時檢測到的錯誤被稱為異常,異常不一定會導致嚴重後果,但是,大多數異常並不會被程式處理,此時會顯示如下所示的錯誤資訊。

print(10

/0)#這個表示式在語法上是沒有錯誤的

'''traceback (most recent call last):

file "/users/clay/desktop/python/demo.py", line 1, in print(10 / 0)

zerodivisionerror: division by zero

'''

錯誤資訊的最後一行告訴我們程式遇到了什麼型別的錯誤,異常有不同的型別,而其型別名稱將會作為錯誤資訊的一部分中列印出來,這一行的剩下的部分根據異常型別及其原因提供詳細資訊。

異常名稱

描述baseexception

所有異常的基類

exception

常規錯誤的基類

stopiteration

迭代器沒有更多的值

systemexit

直譯器請求退出

overflowerror

數值運算超出最大限制

zerodivisionerror

除或取模運算的第二個引數為0

attributeerror

物件沒有這個屬性

keyerror

對映中沒有這個鍵

indentationerror

縮排錯誤

valueerror

傳入無效的引數

warning

警告的基類

在python中可以用try/except來進行異常的處理

while

true

:try

: x =

int(

input

('請輸入乙個數字'))

print

(x)break

except valueerror:

print

('您輸入的不是數字,請再次嘗試!'

)

try語句的工作原理:

try/except還有可選語句else和finally

try

: 執行**

except 異常型別 as異常名:

發生異常時執行的**

else

: 沒有異常時執行的**

finally

: 不管有沒有異常都會執行的**

程式設計師可以用raise語句強制丟擲乙個指定的型別

raise語法格式如下:

raise

[exception [

, args [

, traceback]

]]

比如我們要求不能輸入5以上的數字,否則就會丟擲錯誤,**如下:

x =

10if x >5:

raise exception(

'x不能大於5'

)'''

traceback (most recent call last):

file "/users/clay/desktop/python/demo.py", line 3, in raise exception('x不能大於5')

exception: x不能大於5

'''

程式可以通過建立新的異常類來命名它們自己的異常,異常類繼承自 exception 類,可以直接繼承,或者間接繼承。

class

myerror

(exception)

:pass

defmyerror

(a,b)

:if a>b:

raise myerror(

'a不能大於b'

)myerror(4,

3)'''traceback (most recent call last):

file "/users/clay/desktop/python/demo.py", line 6, in myerror(4,3)

file "/users/clay/desktop/python/demo.py", line 5, in myerror

raise myerror('a不能大於b')

__main__.myerror: a不能大於b

'''

myerror是我們自己定義異常型別,如果不滿足程式要求,就丟擲異常。大多數異常都定義為名稱以「error」結尾,類似於標準異常的命名。

python學習筆記 錯誤處理

程式中的錯誤處理有多種方式,一類是約定好錯誤碼,然後根據返回的錯誤碼來判斷是否發生錯誤,以及錯誤的原因。但是這麼做容易將正確的返回值和錯誤碼混在一起,必須要寫很多 來區分,非常不方便。另外一旦出錯,還需要一級一級往上報,知道有一級可以處理它。比較成熟的做法是try.except.finally.這一...

Python學習筆記 錯誤 除錯和測試

根據廖雪峰python教程整理 在程式執行過程中,總會遇到各種各樣的錯誤。有的錯誤是程式編寫有問題造成的,比如本來應該輸出整數結果輸出了字串,這種錯誤我們通常稱之為bug bug 是必須修復的。有的錯誤是使用者輸入造成的,比如讓使用者輸入email 位址,結果得到乙個空字串,這種錯誤可以通過檢查使用...

matlab程式設計筆記 錯誤集錦

總結一些自己遇到過的使人抓狂的報錯,往往是自己粗心大意造成的 disp jafjjaja index exceeds matrix dimensions 原因 前面把disp定義為變數了,程式設計的時候千萬要注意噢!已存在的函式名不能用作變數名 find a b ans empty matrix 1...