python3異常處理
阿新 • • 發佈:2018-11-25
什麼是異常?
異常即是一個事件,該事件會在程式執行過程中發生,影響了程式的正常執行。
一般情況下,在Python無法正常處理程式時就會發生一個異常。
異常是Python物件,表示一個錯誤。
當Python指令碼發生異常時我們需要捕獲處理它,否則程式會終止執行。
異常處理
捕捉異常可以使用try/except語句。
try/except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常資訊並處理。
如果你不想在異常發生時結束你的程式,只需在try裡捕獲它。
語法:
以下為簡單的try....except...else的語法:
try: 正常的操作 ......................except: 發生異常,執行這塊程式碼 ...................... else: 如果沒有異常執行這塊程式碼
try: fh = open("testfile", "w") fh.write("這是一個測試檔案,用於測試異常!!") except IOError: print("Error: 沒有找到檔案或讀取檔案失敗") else: print("內容寫入檔案成功") fh.close()
try-finally 語句
try-finally 語句無論是否發生異常都將執行最後的程式碼。
try: <語句> finally: <語句> #退出try時總會執行 raise
try: fh = open("testfile", "w") fh.write("這是一個測試檔案,用於測試異常!!") finally: print("Error: 沒有找到檔案或讀取檔案失敗")
使用者自定義異常
通過建立一個新的異常類,程式可以命名它們自己的異常。異常應該是典型的繼承自Exception類,通過直接或間接的方式。
以下為與RuntimeError相關的例項,例項中建立了一個類,基類為RuntimeError,用於在異常觸發時輸出更多的資訊。
在try語句塊中,使用者自定義的異常後執行except塊語句,變數 e 是用於建立Networkerror類的例項。
class SupermanException(Exception): def __init__(self, msg): self.message = msg # def __str__(self): # return self.message try: raise SupermanException('我的異常') except SupermanException as e: print(e)