Python之异常处理-Exception
在寫python程序時, 不要害怕報錯, 也不要怕自己的英語不夠好, 不要看到一有紅色的字就心里發(fā)慫. 其實報的錯也是有套路可尋滴~識別了異常的種類, 才能對癥下藥.
常見異常:
Exception ?? ? ? ? ? ? ? ? ? ? ? 所有異常的基類
AttributeError? ? ? ? ? ? ? ? ?特性應用或賦值失敗時引發(fā)
IOError? ? ? ? ? ? ? ? ? ? ? ? ? ? ?試圖打開不存在的文件時引發(fā)
IndexError? ? ? ? ? ? ? ? ? ? ? ?在使用序列中不存在的索引時引發(fā)
KeyError ?? ? ? ? ? ? ? ? ? ? ? ? 在使用映射不存在的鍵時引發(fā)
NameError ?? ? ? ? ? ? ? ? ? ? ?在找不到名字(變量)時引發(fā)
SyntaxError? ? ? ? ? ? ? ? ? ? ?在代碼為錯誤形式時引發(fā)
TypeError ? ? ? ? ? ? ? ? ? ? ? ? 在內(nèi)建操作或者函數(shù)應用于錯誤類型的對象是引發(fā)
ValueError? ? ? ? ? ? ? ? ? ? ? ?在內(nèi)建操作或者函數(shù)應用于正確類型的對象,但是該對象使用不合適的值時引發(fā)
ZeroDivisionError ? ? ? ? ?在除法或者摸除操作的第二個參數(shù)為0時引發(fā)
?
1. 拋出異常
def div(x,y):if y == 0:raise ZeroDivisionError('Zero is not allowed.') return x/y try: div(4,0) except Exception as e: print(e) Zero is not allowed.Process finished with exit code 0?
2. 捕捉異常:
可同時捕捉多個異常,可捕捉異常對象,可忽略異常類型以捕捉所有異常
try/except 可以加上 else 語句,實現(xiàn)在沒有異常時執(zhí)行什么
try:x = int(input('input x:')) y = int(input('input y:')) print('x/y = ',x/y) except ZeroDivisionError: #捕捉除0異常 print("ZeroDivision") except (TypeError,ValueError) as e: #捕捉多個異常,并將異常對象輸出 print(e) except: #捕捉其余類型異常 print("it's still wrong") else: #沒有異常時執(zhí)行 print('it works well') input x:4 input y:2 x/y = 2.0 it works wellProcess finished with exit code 03. finally 語句
不管是否出現(xiàn)異常,最后都會執(zhí)行finally的語句塊內(nèi)容,用于清理工作
所以,你可以在 finally 語句中關(guān)閉文件,這樣就確保了文件能正常關(guān)閉
異常拋出之后,如果沒有被接收,那么程序會拋給它的上一層,比如函數(shù)調(diào)用的地方,要是還是沒有接收,那繼續(xù)拋出,如果程序最后都沒有處理這個異常,那它就丟給操作系統(tǒng)了 -- 你的程序崩潰了
轉(zhuǎn)載于:https://www.cnblogs.com/xiaowangzi1110/p/6733318.html
總結(jié)
以上是生活随笔為你收集整理的Python之异常处理-Exception的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring开发包介绍
- 下一篇: python 04 基础