for i in
range(10
)print
(i)輸出
for i in
range(10
)^syntaxerror: invalid syntax
python的語法分析器完成,檢測到錯誤所在檔案和行號。以向上箭頭標記錯誤位置。最後顯示錯誤型別。
當程式檢測到錯誤,直譯器就無法繼續執行下去,丟擲異常,終止程式。
系統根據不同的錯誤,丟擲不同的異常
常見異常:
異常描述
nameerror
嘗試訪問乙個沒有申明的變數
zerodivisionerror
除數為 0
syntaxerror
語法錯誤
indexerror
索引超出序列範圍
keyerror
請求乙個不存在的字典關鍵字
filenotfounderror
檔案未發現錯誤(比如你要讀的檔案不存在)
attributeerror
嘗試訪問未知的物件屬性
modulenotfounderror
模組未發現
indentationerror
縮排
(1)
print
(sr)
nameerror: name 'sr'
isnot defined(2
)for i in
range(10
)print
(i)syntaxerror: invalid syntax(3
)dic=
dic[
'name'
]print
(dic)
keyerror:
'name'(4
)import tts
modulenotfounderror: no module named 'tts'(5
)for i in
range(10
):print
(i)indentationerror: expected an indented block
程式一旦發生錯誤,程式就無法繼續執行
為了程式健康,可做相關異常處理。
try…except…
try
: try_statements
except
[exceptiontype [
as identifier]]:
except_statements
[else
: else_statements]
[finally
: finally_statements]
except子句
else子句
finally子句
try
: x =
eval
(input
('請輸入被除數x:\t'))
y =eval
(input
('請輸入除數y:\t'))
z = x/y
except zerodivisionerror:
print
('除數不可以為0.'
)except nameerror:
print
('請檢查變數是否賦值。'
)else
:print
('未捕捉到異常,x/y='
,z)finally
:print
('離開try ... except 模組。'
)請輸入被除數x:
8請輸入除數y:
0除數不可以為0
.離開try..
.except 模組。
try
: x =
eval
(input
('請輸入被除數x:\t'))
y =eval
(input
('請輸入除數y:\t'))
z = x/y
except exception as e:
#捕獲所有異常
print
(e.args)
else
:print
('未捕捉到異常,x/y='
,z)finally
:print
('離開try ... except 模組。'
)
請輸入被除數x:
8請輸入除數y:0(
'division by zero',)
離開try..
.except 模組。
try
: x =
eval
(input
('請輸入被除數x:\t'))
y =eval
(input
('請輸入除數y:\t'))
z = x/y
except
(zerodivisionerror, nameerror)
as e:
#處理多個異常的except語句
print
(e.args)
else
:print
('未捕捉到異常,x/y='
,z)finally
:print
('離開try ... except 模組。')(
1)請輸入被除數x:
8請輸入除數y:0(
'division by zero',)
離開try..
.except 模組。(2
)請輸入被除數x:12,
請輸入除數y:
2離開try..
.except 模組。
traceback (most recent call last)
: file "d:/pythonwork/day06/day06.py"
, line 26,in
z = x/y
typeerror: unsupported operand type
(s)for/:
'tuple'
and'int'
除了系統丟擲的異常,我們可以用raise語句自己觸發異常。
格式:
raise
[exception [
, args [
, traceback]
]
try
:raise nameerror(
"sorry, error occurs"
)except nameerror:
print
('捕捉到異常'
)finally
:print
('離開try ... except 模組。'
)捕捉到異常
離開try..
.except 模組。
assert condition
邏輯上相當於:
if
not condition:
raise assertionerror(
)
為斷言新增乙個異常引數
assert expression [
, args]
arguments
li =[1
,2]assert
len(li)
>=5,
'列表元素個數小於5'
assertionerror: 列表元素個數小於5
python異常與錯誤學習
1 異常簡介 看如下示例 print test begin f open 123.txt r 用唯讀模式開啟乙個不存在的檔案,會報錯 開啟乙個不存在的檔案123.txt,當找不到123.txt 檔案時,就會丟擲給我們乙個ioerror型別的錯 誤,no such le or directory 12...
python 錯誤與異常
錯誤在執行前修改,邏輯錯誤無法修改 執行時,異常產生,檢查到錯誤且直譯器認為是異常,丟擲異常 異常處理,截獲異常,忽略或者終止程式處理異常 try try suite except exception e exception blocktry aexcept nameerror,e print ca...
python 錯誤與異常
開發人員在編寫程式的時候難免會遇到錯誤,那遇到錯誤要如何找到錯誤並處理異常呢?本篇主要實現異常的處理方法。一 錯誤分類 1.語法錯誤 syntaxerror 2.執行時錯誤 這種包括很多異常的型別,eg nameerror zerodivisionerror等 二 異常處理的基本語法 try 執行 ...