1、try...except
我們寫程式的時候,會出現一些錯誤或異常,導致程式終止。例如,做除法時,除數為0,會引起乙個zerodivisionerror,例如:
a=5b=0c=a/b
(c)#
以上執行結果丟擲異常:
traceback (most recent call last):
file
"d:/test/pythonlianxi/day8/異常處理.py
", line 25, in
c=a/b
zerodivisionerror: division by zero
程式因為zerodivisionerror而中斷了,語句print 沒有執行。為了處理異常,我們使用try...except,更改**:
a=10b=0try:
c=a/b
(c)except
zerodivisionerror as e: #這個e代表錯誤資訊,如果上面的兩行**出現了zerodivisionerror這個錯
(e)print('
除數不能為0
')
division by zero
除數不能為0
這樣程式就不會因為異常而中斷,從而print('除數不能為0')語句正常執行,我們把可能發生錯誤的語句放在try模組裡,用except來處理異常。except可以處理乙個專門的異常,也可以處理一組圓括號中的異常,如果except後沒有指定異常,則預設處理所有的異常。每乙個try,都必須至少有乙個except
捕獲所有異常:如果不知道**會發生什麼樣的異常,但是也想把異常捕捉到該怎麼處理呢,可以使用exception,這樣**就不會因為異常而終止執行,例如:
a=10b=0division by zerotry:
c=a/b
(c)except exception as e:#
這個e代表錯誤資訊,如果上面的兩行**出錯
(e)
print('
出錯了')
執行結果:
出錯了2、try ....except...else 語句
當沒有異常發生時,else中的語句將會被執行,else語句不是必須寫的,也可以不寫。例如:
a=10b=5並沒有出錯try:
c=a/b
#print (c)
except exception as e:#
這個e代表錯誤資訊,如果上面的兩行**出錯
(e)
print('
出錯了'
)else:#
沒有出錯,也不是必須寫的
print('
並沒有出錯
') #
這個是沒有異常的時候走
print(c)
執行結果:
2.03、try ...finally
無論異常是否發生,在程式結束前,finally中的語句都會被執行。例如:
出錯了:
a=10b=0division by zerotry:
c=a/b
except exception as e:#
這個e代表錯誤資訊,如果上面的兩行**出錯
(e)
print('
出錯了'
)else:#
沒有出錯,也不是必須寫的
print('
並沒有出錯
') #
這個是沒有異常的時候走
(c)finally:#
不管出錯或者沒有出錯都會執行它,也不是必須寫的。
print('
我是finally
')執行結果:
出錯了我是finally
沒有出錯:
a=10b=5並沒有出錯try:
c=a/b
except exception as e:#
這個e代表錯誤資訊,如果上面的兩行**出錯
(e)
print('
出錯了'
)else:#
沒有出錯,也不是必須寫的
print('
並沒有出錯
') #
這個是沒有異常的時候走
(c)finally:#
不管出錯或者沒有出錯都會執行它,也不是必須寫的。
print('
我是finally
')執行結果:
2.0我是finally
python異常處理 Python 異常處理
使用者輸入不完整 比如輸入為空 或者輸入非法 輸入不是數字 異常就是程式執行時發生錯誤的訊號,在python中,錯誤觸發的異常如下 在python中不同的異常可以用不同的型別 python中統一了類與型別,型別即類 去標識,不同的類物件標識不同的異常,乙個異常標識一種錯 觸發indexerror 觸...
python異常舉例 Python異常處理
1.1異常問題舉例 例一 i input 請輸入數字 請輸入數字 0 print i print 5 int i traceback most recent call last file line 1,in zerodivisionerror division by zero 上述 的報錯是除零的錯...
python異常處理
當你的程式中出現異常情況時就需要異常處理。比如當你開啟乙個不存在的檔案時。當你的程式中有一些無效的語句時,python會提示你有錯誤存在。下面是乙個拼寫錯誤的例子,print寫成了print。python是大小寫敏感的,因此python將引發乙個錯誤 print hello world file l...