demo:
for i in
range(10
)print
(i)
out—>
for i in
range(10
)^syntaxerror: invalid syntax
python的語法分析器完成,檢測到錯誤所在檔案的行號。以向上箭頭標記錯誤位置,最後顯示錯誤型別。
當程式檢測到乙個錯誤,直譯器就無法繼續執行下去,丟擲異常,終止程式。
系統根據不不同的錯誤,丟擲不同的異常
常見異常:
異常描述
nameerror
嘗試訪問乙個沒有申明的變數
zerodivisionerror
除數為 0
syntaxerror
語法錯誤
indexerror
索引超出序列範圍
keyerror
請求乙個不存在的字典關鍵字
filenotfounderror
檔案未發現錯誤(比如你要讀的檔案不存在)
attributeerror
嘗試訪問未知的物件屬性
modulenotfounderror
模組未發現
indentationerror
縮排
print(1
/0)zerodivisionerror: division by zero
li=[
]print
(li[1]
)indexerror:
list index out of range
print
(a)nameerror: name 'a'
isnot defined
import a
modulenotfounderror: no module named 'a'
a=10
indentationerror: unexpected indent..
.
程式一旦發生錯誤,程式就無法繼續執行
為了是程式健壯,可做相關異常處理
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
('請輸入除數x:\t'))
z = x / y
except zerodivisionerror:
print
('除數不能為0'
)except nameerror:
print
('請檢查變數是否賦值'
)except exception as e:
# 輸出報錯型別
print
(e.args)
else
:print
('未捕捉到異常,x/y'
,z)finally
:print
('離開try..except..模組'
)
try…except…小結
處理多個異常的except語句
捕獲所有異常
除了系統丟擲的異常,我們可以用raise語句自己觸發異常
格式:
raise
[exception [
,args [
,traceback]]]
try:
raise zerodivisionerror(
'sorry error'
)except zerodivisionerror:
print
('aa'
)
aa
assert condition
邏輯上相當於:
if
not conditon:
raise assertionerror(
)
為斷言新增乙個異常引數
assert expression [
,args]
demo:
li=[1
,2]assert
len(li)
>=5,
'列表元素小於5個'
traceback (most recent call last)
: file "d:/pycharmprojects/1/day.py"
, line 321,in
assert
len(li)
>=5,
'列表元素小於5個'
assertionerror: 列表元素小於5個
執行python程式
1 在windows下執行python程式 1 從dos命令列執行python指令碼 用python直譯器來執行python指令碼,在windows下面python直譯器是python.exe,我的python檔案安裝在d python27,在這個目錄下可以看到python直譯器。完整的命令應該是 ...
執行python程式
1 在windows下執行python程式 1 從dos命令列執行python指令碼 用python直譯器來執行python指令碼,在windows下面python直譯器是python.exe,我的python檔案安裝在d python27,在這個目錄下可以看到python直譯器。完整的命令應該是 ...
執行程式,提示記憶體錯誤
問題描述 0x57a61b34 qtguid4.dll 處有未經處理的異常 0xc0000005 讀取位置0xc5afe8c1時發生訪問衝突。除錯,檢視變數的值會提示 cxx0030 錯誤 無法計算表示式的值 問題原因 這個程式建立了選單和動作,即menu和action 在初始化的時候,先呼叫的cr...