Python 錯誤異常處理(Exception)
範例
def divide(a, b):
try:
result = a / b
except ZeroDivisionError:
print("b 值不能為零")
else:
print("結果", result)
finally:
print("執行 finally 程式區塊")
divide(2, 1)
divide(2, 0)
divide("2", "1")
程式說明:
第1行:定義一個除法的函數,名稱為divide,可以接收 a 和 b 參數值,為被除數與除數值。
第1行:定義一個除法的函數,名稱為divide,可以接收 a 和 b 參數值,為被除數與除數值。
第2行:使用 try 包起一個可能發生異常例外的程式區塊。
第4行:當發生程式例外狀況,會執行此程式區塊,以此例若 b 值為數字零,將會列印 『b 值不能為零』。
第6行:若try程式區塊,無發生任何程式例外,則執行else 區塊,此例則會印出 a 除以 b 的結果值。
第8行:不論 try 程式區塊,是否會發生例外或成功運行都會執行 finally 程式區塊,此區塊通常應用在釋放檔案或網路連線資源。
第14行:因此例,定義的 divide 函數中的參數,只接受數值型態,若呼叫該函數,帶字串參數將會發生 TypeError 錯誤。
運算結果
結果 2.0
執行 finally 程式區塊
b 值不能為零
執行 finally 程式區塊
執行 finally 程式區塊
Traceback (most recent call last):
File "/home/qq/PycharmProjects/demo/error.py", line 14, in <module>
divide("2", "1")
File "/home/qq/PycharmProjects/demo/error.py", line 3, in divide
result = a / b
TypeError: unsupported operand type(s) for /: 'str' and 'st