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