python--异常处理
異常處理
報(bào)錯(cuò)時(shí)候前面是錯(cuò)誤類(lèi)型,后面是異常說(shuō)明上面是異常的追蹤信息
真正報(bào)錯(cuò)的是最后一行
如果錯(cuò)誤跳到內(nèi)置代碼,python的代碼不會(huì)出錯(cuò),那么就往上找自己代碼的錯(cuò)誤
?
異常處理的應(yīng)用
1.可以用if規(guī)避,但是成本太高。
2.不能用if處理了,StopIteration
異常處理的特點(diǎn):一旦發(fā)生異常,程序就不再執(zhí)行了
try:num=input('num:')int(num)print(num) except ValueError:print('請(qǐng)輸入一個(gè)數(shù)字')放在try中的代碼如果遇到except中的錯(cuò)誤類(lèi)型,就會(huì)執(zhí)行except中的代碼
且一旦發(fā)生異常,Try中的代碼會(huì)停止在異常處
但不影響try語(yǔ)句之外的代碼執(zhí)行
一種錯(cuò)誤類(lèi)型只能處理對(duì)應(yīng)的一種錯(cuò)誤,其他錯(cuò)誤還會(huì)照常報(bào)錯(cuò)
可以多個(gè)except套用,如果中間的錯(cuò)誤了,下面的錯(cuò)誤也不會(huì)執(zhí)行
程序跑的很好的時(shí)候ctrl+c讓他停止,會(huì)發(fā)生一個(gè)異常keyboardInterrupt
try里面最好不要調(diào)用函數(shù)
as語(yǔ)句,as后面的變量就是錯(cuò)誤的具體
as 在我們不能完全明確的知道這個(gè)錯(cuò)誤到底是發(fā)生了什么的是時(shí)候就用as? 變量
將變量中存儲(chǔ)的錯(cuò)誤信息打印出來(lái)
except Exception萬(wàn)能異常:
對(duì)于你已經(jīng)可以預(yù)見(jiàn)的但是不能完全規(guī)避的必須要處理的異常,你應(yīng)該去指定他的處理方式
對(duì)于其他你不能預(yù)料的,再使用萬(wàn)能異常處理
萬(wàn)能異常和其他異常處理一起用時(shí)候,其他異常處理要放在上面
異常處理中的else語(yǔ)句
try語(yǔ)句正確執(zhí)行沒(méi)有發(fā)生異常才去執(zhí)行else
一般else是來(lái)看是否執(zhí)行成功給一個(gè)回執(zhí)
完整異常處理的一套例子? 代碼執(zhí)行成功時(shí)執(zhí)行else? 出現(xiàn)ValueError異常執(zhí)行第二個(gè)
別的異常執(zhí)行萬(wàn)能異常處理,最后必須要執(zhí)行finally(遇見(jiàn)return也執(zhí)行)
raise 觸發(fā)異常用的,后邊加異常,主動(dòng)報(bào)異常
assert? 斷言? 后邊是條件? 不符合條件就報(bào)錯(cuò)
轉(zhuǎn)載于:https://www.cnblogs.com/gaoshengyue/p/7518786.html
總結(jié)
以上是生活随笔為你收集整理的python--异常处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: js内存理解
- 下一篇: InnoDB Master Thread