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