เมื่อเร็ว ๆ นี้ฉันพยายามดิ้นรนที่จะเข้าใจว่าการตรวจสอบในปริมาณที่เหมาะสมคืออะไรและวิธีการที่เหมาะสมคืออะไร
ฉันมีคำถามสองสามข้อเกี่ยวกับเรื่องนี้:
เป็นวิธีที่เหมาะสมในการตรวจสอบข้อผิดพลาด (อินพุตไม่ดี, รัฐไม่ดี ฯลฯ ) คืออะไร? เป็นการดีกว่าที่จะตรวจสอบข้อผิดพลาดอย่างชัดเจนหรือใช้ฟังก์ชั่นเช่นการยืนยันที่สามารถปรับให้เหมาะสมกับโค้ดสุดท้ายของคุณ? ฉันรู้สึกเหมือนกำลังตรวจสอบโปรแกรมอย่างชัดเจนด้วยรหัสพิเศษจำนวนมากซึ่งไม่ควรถูกเรียกใช้ในสถานการณ์ส่วนใหญ่อย่างไรก็ตาม - และไม่พูดถึงข้อผิดพลาดส่วนใหญ่ที่จบลงด้วยความล้มเหลวในการยกเลิก / ออก เหตุใดจึงมีฟังก์ชั่นตรวจสอบอย่างชัดเจนว่าจะยกเลิกหรือไม่ ฉันได้มองหา asserts เทียบกับการตรวจสอบข้อผิดพลาดอย่างชัดเจนและพบว่ามีเพียงเล็กน้อยที่จะอธิบายอย่างแท้จริงเมื่อต้องทำเช่นกัน
ส่วนใหญ่พูดว่า 'ใช้ข้อความยืนยันเพื่อตรวจสอบข้อผิดพลาดเชิงตรรกะและใช้การตรวจสอบอย่างชัดเจนเพื่อตรวจสอบความผิดพลาดอื่น ๆ ' ดูเหมือนว่าจะไม่ได้รับเราไปไกลมาก เราจะพูดว่าเป็นไปได้หรือไม่:
Malloc returning null, check explictly
API user inserting odd input for functions, use asserts
สิ่งนี้จะทำให้ฉันดีขึ้นเมื่อตรวจสอบข้อผิดพลาดหรือไม่ ฉันจะทำอะไรได้อีก ฉันต้องการปรับปรุงและเขียนรหัส 'มืออาชีพ' ให้ดีขึ้น
setjmp
/ longjmp
มีให้บริการใน C ดังนั้นคุณไม่จำเป็นต้องใช้ภาษาใหม่