Python3 錯誤和異常

2022-07-07 10:24:09 字數 2901 閱讀 5508

python 有兩種錯誤很容易辨認:語法錯誤和異常。

python assert(斷言)用於判斷乙個表示式,在表示式條件為 false 的時候觸發異常。

python 的語法錯誤或者稱之為解析錯,是初學者經常碰到的,如下例項

>>> while true print('hello world')

file "", line 1, in ?

while true print('hello world')

^syntaxerror: invalid syntax

這個例子中,函式 print() 被檢查到有錯誤,是它前面缺少了乙個冒號 : 。

語法分析器指出了出錯的一行,並且在最先找到的錯誤的位置標記了乙個小小的箭頭。

即便 python 程式的語法是正確的,在執行它的時候,也有可能發生錯誤。執行期檢測到的錯誤被稱為異常。

大多數的異常都不會被程式處理,都以錯誤資訊的形式展現在這裡:

>>> 10 * (1/0)             # 0 不能作為除數,觸發異常

traceback (most recent call last):

file "", line 1, in ?

zerodivisionerror: division by zero

>>> 4 + spam*3             # spam 未定義,觸發異常

traceback (most recent call last):

file "", line 1, in ?

nameerror: name 'spam' is not defined

>>> '2' + 2               # int 不能與 str 相加,觸發異常

traceback (most recent call last):

file "", line 1, in >

typeerror: can only concatenate str (not "int") to str

異常以不同的型別出現,這些型別都作為資訊的一部分列印出來: 例子中的型別有 zerodivisionerror,nameerror 和 typeerror。

錯誤資訊的前面部分顯示了異常發生的上下文,並以呼叫棧的形式顯示具體資訊。

表 1 python常見異常型別

異常型別

含義例項

assertionerror

當 assert 關鍵字後的條件為假時,程式執行會停止並丟擲 assertionerror 異常

>>> demo_list = ['c語言中文網']

>>> assert len(demo_list) > 0

>>> demo_list.pop()

'c語言中文網'

>>> assert len(demo_list) > 0

traceback (most recent call last):

file "", line 1, in

assert len(demo_list) > 0

assertionerror

attributeerror

當試圖訪問的物件屬性不存在時丟擲的異常

>>> demo_list = ['c語言中文網']

>>> demo_list.len

traceback (most recent call last):

file "", line 1, in

demo_list.len

attributeerror: 'list' object has no attribute 'len'

indexerror

索引超出序列範圍會引發此異常

>>> demo_list = ['c語言中文網']

>>> demo_list[3]

traceback (most recent call last):

file "", line 1, in

demo_list[3]

indexerror: list index out of range

keyerror

字典中查詢乙個不存在的關鍵字時引發此異常

>>> demo_dict=

>>> demo_dict["c語言"]

traceback (most recent call last):

file "", line 1, in

demo_dict["c語言"]

keyerror: 'c語言'

nameerror

嘗試訪問乙個未宣告的變數時,引發此異常

>>> c語言中文網

traceback (most recent call last):

file "", line 1, in

c語言中文網

nameerror: name 'c語言中文網' is not defined

typeerror

不同型別資料之間的無效操作

>>> 1+'c語言中文網'

traceback (most recent call last):

file "", line 1, in

1+'c語言中文網'

typeerror: unsupported operand type(s) for +: 'int' and 'str'

zerodivisionerror

除法運算中除數為 0 引發此異常

>>> a = 1/0

traceback (most recent call last):

file "", line 1, in

a = 1/0

zerodivisionerror: division by zero

python3異常例項 Python3 錯誤和異常

錯誤和異常 程式執行時有兩種可以分辨的錯誤 syntax error 和 exception 按中文來說,就是語法錯誤和異常。語法錯誤 語法錯誤也就是解析錯誤,是我們最優可能遇到的錯誤。while true print hello world file line 1,in?while true pr...

python3的錯誤和異常操作

python有兩種錯誤 語法錯誤和異常 語法錯誤 python的語法錯誤或者稱之為解析錯,經常碰到,如下 while true print hello world file line 1,in while true print hello world syntaxerror invalid synt...

Python3 異常處理

python3.5 異常處理 try用法 try except語句主要是用於處理程式正常執行過程中出現的一些異常情況 try finally語句則主要用於在無論是否發生異常情況,都需要執行一些清理工作的場合 完整語句中,else語句的存在必須以except x或者except語句為前提,也就是說el...