เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การดักจับข้อยกเว้น

ก่อนที่จะเริ่มเขียน custom exception ของตัวเอง มาตรวจสอบให้แน่ใจก่อนว่าเข้าใจพื้นฐานของการจัดการข้อยกเว้นเป็นอย่างดีแล้ว

ในแบบฝึกหัดนี้ มีฟังก์ชัน invert_at_index(x, ind) ให้ ซึ่งรับอาร์กิวเมนต์สองตัว ได้แก่ลิสต์ x และอินเดกซ์ ind แล้วคืนค่าส่วนกลับของสมาชิกในลิสต์ที่ตำแหน่งนั้น ตัวอย่างเช่น invert_at_index([5,6,7], 0) จะคืนค่า 1/5 หรือ 0.2

เป้าหมายคือการเพิ่มการจัดการข้อผิดพลาด เพื่อโยน custom exception ตามประเภทของข้อผิดพลาดที่เกิดขึ้น

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Python เบื้องต้นสำหรับการเขียนโปรแกรมเชิงวัตถุ

ดูคอร์ส

คำแนะนำการฝึกหัด

ใช้รูปแบบ try - except - except (พร้อมบล็อก except สองบล็อก) ภายในฟังก์ชัน เพื่อดักจับและจัดการข้อยกเว้นสองรายการดังนี้:

  • try รันโค้ดตามปกติ โดยคืนค่า 1/x[ind]
  • หากเกิด ZeroDivisionError ให้พิมพ์ "Cannot divide by zero!"
  • หากเกิด IndexError ให้พิมพ์ "Index out of range!"

รู้ว่าทำถูกต้องแล้วเมื่อโค้ดรันได้โดยไม่มีข้อผิดพลาด และผลลัพธ์ใน console เป็นดังนี้:

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))
แก้ไขและรันโค้ด