1. 程式人生 > >python3異常處理

python3異常處理

什麼是異常?

異常即是一個事件,該事件會在程式執行過程中發生,影響了程式的正常執行。

一般情況下,在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)