攔截例外
在開始撰寫自己的自訂例外之前,先確認你已經掌握處理例外的基本功。
在這個練習中,你會拿到一個函式 invert_at_index(x, ind),它接受兩個引數:串列 x 與索引 ind,並將該索引位置的元素取倒數。例如,invert_at_index([5,6,7], 0) 會回傳 1/5,也就是 0.2。
你的目標是依據實際發生的錯誤型別,實作錯誤處理,並拋出自訂例外。
本練習屬於課程
Python 物件導向程式設計入門
練習說明
在函式內使用 try - except - except 的模式(兩個 except 區塊)來攔截並處理下列兩種例外:
try直接執行程式碼,回傳1/x[ind]。- 若發生
ZeroDivisionError,印出"Cannot divide by zero!", - 若發生
IndexError,印出"Index out of range!"
當程式能正常執行且主控台輸出如下時,表示你完成得正確:
0.16666666666666666
Cannot divide by zero!
None
Index out of range!
None
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Modify the function to catch exceptions
def invert_at_index(x, ind):
____:
return 1/x[ind]
_____:
print("____")
____:
print("____")
a_list = [5,6,0,7]
# Works okay
print(invert_at_index(a_list, 1))
# Potential ZeroDivisionError
print(invert_at_index(a_list, 2))
# Potential IndexError
print(invert_at_index(a_list, 5))