開始使用免費開始

攔截例外

在開始撰寫自己的自訂例外之前,先確認你已經掌握處理例外的基本功。

在這個練習中,你會拿到一個函式 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))
編輯並執行程式碼