異常處理語法:
try:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 錯誤!=異常
? ? ? ? <異常監(jiān)控>
excpet Exception[,reason]:? ? ? ? ? ? ? ? ? ? ? ? ? ? 異常是指出現(xiàn)錯誤是采用正常控制
? ? ? ? <異常處理代碼>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 以外的動作異常處理的一般
finally:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 流程是:
? ? ? ? <無論異常是否發(fā)生都執(zhí)行>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 檢測到錯誤,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?引發(fā)異常;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 對異常進(jìn)行捕獲處理
常遇到錯誤:
1.NameError:是指變量未定義類型? ? ? ? ????????????????????????????例:i=j
2.syntax Error:語法錯誤會提示在那一行出現(xiàn)? ? ? ? ? ? ? ? ? 例:print())
3. indexError:超出索引范圍? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 例:a='123'? ? ????????????????????????????????????????????????????????????????????????????????????????????????????print(a[3])
4.KeyError:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?例:d={'a':1,'b';2}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?prin(d['c'])
5.ValueError:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?例:year=int(input('input year:'))
6.AttributeError:屬性錯誤? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?例:a=123
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?a.append()
7.ZeroDivisionError:除0異常
如何進(jìn)行捕獲異常:
例:
? ? ? ? ? ? try:
? ? ? ? ? ? ? ? ? ?year=int(input('input year:'))
? ? ? ? ? ? ? ?except?ValueError:
? ? ? ? ? ? ? ? ? ? ? ?print('年份要輸入數(shù)字')
? 多種異常捕獲:
例如:
? ? ? ? ? ? except (KeyError,ValueError,AttributeError)
對異常信息進(jìn)行詳細(xì)輸出:
? ? ? ? ? ?已知異常信息:
? ? ? ? ? ? ? ? ? ? ? ?try:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?print(1/0)
? ? ? ? ? ? ? ? ? ? ? ? except ZeroDivisionError? as e:? ? ? ?as將異常信息定義為變量
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?print(’0不能做除數(shù) %s‘ %e)
? ? ? ? ? ? ? 未知異常信息:
? ? ? ? ? ? ? ? ? ? ? ? ?try:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?print(1/0)
? ? ? ? ? ? ? ? ? ? ? ? ?except Exception as e:? ? ? ? ? ? ? ? 用于捕獲未知的異常信息
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?print(’0不能做除數(shù) %s‘ %e)
如何自己定義錯誤信息:
????????????????????try:
? ? ? ? ? ? ? ? ? ? ? ? ?????reise Name Error(’helloError‘)
? ? ? ? ? ? ? ? ? ? ?except?NameError:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? print ('my custonm error')?
finally(一般用于文件控制):
? ? ? ? ? ? ? ? ? ? ? ? try:? ??????????????????????????
? ? ? ? ? ? ? ? ? ? ? ? ?????????a=open('name.text')
? ? ? ? ? ? ? ? ? ? ?????except?Exception as e:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ????? print (e)?
? ? ? ? ? ? ? ? ? ? ? ? ? ?finally:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? a.close()