การโยนข้อผิดพลาดเมื่อได้รับอาร์กิวเมนต์ที่ไม่ถูกต้อง
หากผู้ใช้ป้อนค่าที่ไม่ถูกต้องให้กับฟังก์ชัน วิธีที่ดีที่สุดคือโยนข้อผิดพลาดเพื่อแจ้งให้ทราบ โดยมีหลักการ 2 ข้อ ดังนี้
- โยนข้อความแจ้งข้อผิดพลาดทันทีที่พบปัญหา (โดยทั่วไปจะอยู่ที่จุดเริ่มต้นของฟังก์ชัน)
- ทำให้ข้อความแจ้งข้อผิดพลาดเข้าใจได้ง่าย
สามารถใช้ฟังก์ชัน assert_*() จากไลบรารี assertive เพื่อตรวจสอบค่าที่รับเข้ามาและโยนข้อผิดพลาดเมื่อการตรวจสอบไม่ผ่าน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Introduction to Writing Functions in R
คำแนะนำการฝึกหัด
- เพิ่มโค้ดใน body ของ
calc_harmonic_mean()เพื่อตรวจสอบว่าxเป็นตัวเลข - ลองดูว่าเกิดอะไรขึ้นเมื่อส่งอาร์กิวเมนต์ชนิด character เข้าไปใน
calc_harmonic_mean()
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
calc_harmonic_mean <- function(x, na.rm = FALSE) {
# Assert that x is numeric
___
x %>%
get_reciprocal() %>%
mean(na.rm = na.rm) %>%
get_reciprocal()
}
# See what happens when you pass it strings
calc_harmonic_mean(std_and_poor500$sector)