python入门程序异常_Python入门基础(10)_异常_1
最近有點忙,到現(xiàn)在快一個月沒寫了,罪過罪過,繼續(xù)學(xué)習(xí)
異常:python程序在運行時,如果python解釋器遇到一個錯誤,那么程序就會停止執(zhí)行,并且會提示一些錯誤信息,這就是異常.
拋出異常:程序停止執(zhí)行并提示錯誤信息的動作就是拋出異常.
比如下面這個例子:
num=int(input("請輸入一個數(shù)字:"))print("報錯了吧!弟弟")
如果我輸入的是一個正確的數(shù)字,那么會得到下面的結(jié)果:
請輸入一個數(shù)字:1報錯了吧!弟弟
但是如果我輸入非數(shù)字,將會得到下面的結(jié)果:
請輸入一個數(shù)字:A
Traceback (most recent call last):
File"C:/Users/users/PycharmProjects/study/zixue_good/socket_py/raise_study.py", line 1, in num=int(input("請輸入一個數(shù)字:"))
ValueError: invalid literalfor int() with base 10: 'A'
你會發(fā)現(xiàn)程序不止發(fā)生錯誤,就連我的"報錯了吧!弟弟"都沒有輸出來.在程序的開發(fā)過程中,很多代碼我們是不能確定是否正確;也就是說,在某些代碼里面可能會存在異常(如果你是大佬,毫無錯誤,當(dāng)我沒說過),這時候,我們就需要捕獲異常.
1.捕獲異常
捕獲異常的語法:
try:
嘗試執(zhí)行的代碼(可能有錯誤的代碼塊)
except:
出現(xiàn)錯誤的處理(try里面的代碼出現(xiàn)錯誤之后給點提示)
繼續(xù)看上面的那個例子,現(xiàn)在代碼改寫成這樣了:
try:
num=int(input("請輸入一個數(shù)字:"))except:print("輸入數(shù)字啊!豬")print("報錯了吧!弟弟")
輸入一個正確的數(shù)字,except里面的代碼并不會執(zhí)行,因為我的try里面并沒有錯誤:
請輸入一個數(shù)字:1報錯了吧!弟弟
如果我輸入一個非數(shù)字的字符,try里面出現(xiàn)錯誤,except就會執(zhí)行,后面的print也會繼續(xù)執(zhí)行:
請輸入一個數(shù)字:啊
輸入數(shù)字啊!豬
報錯了吧!弟弟
2.錯誤類型捕獲
程序在執(zhí)行的過程中,會有各種各樣的類型錯誤,比如(
BaseException
所有異常的基類
SystemExit
解釋器請求退出
KeyboardInterrupt
用戶中斷執(zhí)行(通常是輸入^C)
Exception
常規(guī)錯誤的基類
)這些類型錯誤,還有很多種類型錯誤,感興趣的可以去菜鳥教程看一下,這里就不一一列舉了.語法如下:
try:
#嘗試執(zhí)行的代碼塊
pass
except 錯誤類型1:
#針對錯誤類型1,對應(yīng)的代碼處理;
except (錯誤類型2,錯誤類型3):
#針對錯誤類型2和3,對應(yīng)的代碼處理;
except Exception as result:
print("未知錯誤%s"%result)
舉個例子吧:
try:
num= int(input("請輸入整數(shù):"))
result= 8 /numprint(result)exceptValueError:print("請輸入正確的整數(shù)")exceptZeroDivisionError:print("除 0 錯誤")
當(dāng)我執(zhí)行了上面的代碼之后呢
如果我輸入的是非數(shù)字字符,就會得到如下結(jié)果:
請輸入整數(shù):啊
請輸入正確的整數(shù)
如果我輸入0,就會得到如下結(jié)果:
請輸入整數(shù):0
除 0 錯誤
如果我輸入正確的數(shù)字,就會得到如下結(jié)果:
請輸入整數(shù):2
4.0
但是在實際開發(fā)中,為了能夠處理復(fù)雜的異常情況我們通常會使用下面這種寫法:
try:
# 嘗試執(zhí)行的代碼
pass
except 錯誤類型1:
# 針對錯誤類型1,對應(yīng)的代碼處理
pass
except 錯誤類型2:
# 針對錯誤類型2,對應(yīng)的代碼處理
pass
except (錯誤類型3, 錯誤類型4):
# 針對錯誤類型3 和 4,對應(yīng)的代碼處理
pass except
Exception as result:
# 打印錯誤信息
print(result)
else:
# 沒有異常才會執(zhí)行的代碼
pass
finally:
# 無論是否有異常,都會執(zhí)行的代碼
print("無論是否有異常,都會執(zhí)行的代碼")
else 只有在沒有異常時才會執(zhí)行的代碼
finally 無論是否有異常,都會執(zhí)行的代碼
try:
num= int(input("請輸入整數(shù):"))
result= 8 /numprint(result)exceptValueError:print("請輸入正確的整數(shù)")exceptZeroDivisionError:print("除 0 錯誤")exceptException as result:print("未知錯誤 %s" %result)else:print("正常執(zhí)行")finally:print("執(zhí)行完成,但是不保證正確")
上面例子執(zhí)行之后得到如下輸出結(jié)果:
請輸入整數(shù):4
2.0正常執(zhí)行
執(zhí)行完成,但是不保證正確
總結(jié)
以上是生活随笔為你收集整理的python入门程序异常_Python入门基础(10)_异常_1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qt通过蓝牙控制单片机_ST发布新款ST
- 下一篇: amazon mws api 获取所有产