4. 函式的錯誤
5. 丟擲異常
程式執行時發生的錯誤的訊號。
變數未定義
print
(a)nameerror: name 'a'
isnot defined
索引溢位
str
='hello'
print
(str[10
])indexerror: string index out of range
0不能作為除數
print(10
/0)zerodivisionerror: division by zero
字典的keyerror
d =
dict
(a=1
,b=2
)d =
print
(d.get(『c』,『key不存在』)
)print
(d.get(『c』)
)print
(d[『c』]
)keyerror: 『c』
這是一種更溫和的方法 當不確定使用者輸入的內容時 我們不能直接把報錯留給使用者 而選擇這種方法去解決異常
try
:# 不能確定正確之行的**
num =
int(
input
('請輸入乙個數字:'))
print
(num)
except
:# try裡面的**如果有異常/錯誤 才會之行以下**
print
('請輸入正確的整數!!!!'
)print
('*'*50
)
輸出結果:
請輸入乙個數字:aaa
請輸入正確的整數!!!!
****
****
****
****
****
****
****
****
****
****
****
****
**
程式沒有碰到致命錯誤 就執行else
無論是否遇到異常都會執行finally
try
: num =
int(
input
('num:'))
result =
8/ num
print
(result)
except zerodivisionerror:
print
('0不能做除數'
)# except valueerror:
# print('請輸入正確的值')
except exception as r:
print
('未知錯誤!!'
)# 程式沒有碰到致命錯誤 就執行else
else
:print
('hello'
)finally
:# 無論是否遇到異常都會執行
print
('!!!!'
)
輸出結果:
num:aaa
未知錯誤!!
!!!!
num:
00不能做除數
!!!!
num:
24.0
hello
!!!!
函式的錯誤:一級一級向上去找 最終會將異常傳遞到主函式裡面去
def
demo1()
:try
:return
int(
input
('請輸入正確的整數:'))
except exception as r:
print
('未知錯誤 %s'
%r)def
demo2()
:return demo1(
)print
(demo2(
)
輸出結果:
請輸入正確的整數:aaa
未知錯誤 invalid literal for
int(
)with base 10
:'aaa'
none
def
input_passwd()
:# 1.提示使用者輸入密碼
pwd =
input
('請輸入密碼:'
)# 2.判斷密碼長度
iflen
(pwd)
>=8:
return pwd
# 3.如果<8 就主動丟擲異常
print
('主動丟擲異常'
)# a.建立異常物件
ex = exception(
'密碼長度不夠,必須大於8位'
)# b.主動丟擲異常
raise ex
# 注意:只丟擲二不捕獲 **會報錯
try:
print
(input_passwd())
except exception as re:
print
(re)
輸出結果:
請輸入密碼:
123456
主動丟擲異常
密碼長度不夠,必須大於8位
python 下標越界 Python中異常處理
高階語言通常都配置了一套try.except.finally的錯誤處理機制。1 我們先看乙個try的機制 try res 1 0 except zerodivisionerror as e print 出錯了,除數不能為0 e 執行結果為 出錯了,除數不能為0 division by zero 當我...
python中的異常
exception類是最常用的異常類,該類包括standarderror,stopiteration,generatorexit,warning等異常類.standarderror類是python的錯誤異常,如果程式中出現邏輯上的錯誤,將引發該異常.例如除數為0的異常。standarderror類是...
python中的異常
1,空的except語句將會捕捉所有的異常,可以用sys模組中取出異常名和異常的值 2,raw input 讀檔案到末尾時,會引發eoferror異常,這種異常不是錯誤 3,finally只做清楚工作,不做異常處理 異常處理的例子 myexception error defraise1 raisem...