ในฐานะโปรแกรมเมอร์ที่ดีคนหนึ่งควรเขียนโค้ดที่มีประสิทธิภาพซึ่งจะจัดการกับผลลัพธ์ทุกรายการของโปรแกรมของเขา อย่างไรก็ตามฟังก์ชันเกือบทั้งหมดจากไลบรารี C จะส่งคืนค่า 0 หรือ -1 หรือ NULL เมื่อมีข้อผิดพลาด
บางครั้งก็ชัดเจนว่าจำเป็นต้องมีการตรวจสอบข้อผิดพลาดเช่นเมื่อคุณพยายามเปิดไฟล์ แต่ฉันมักจะละเลยการตรวจสอบข้อผิดพลาดในฟังก์ชั่นเช่นprintfหรือmallocเพราะฉันไม่รู้สึกจำเป็น
if(fprintf(stderr, "%s", errMsg) < 0){
perror("An error occurred while displaying the previous error.");
exit(1);
}
เป็นการดีหรือไม่ที่จะละเว้นข้อผิดพลาดบางอย่างหรือมีวิธีที่ดีกว่าในการจัดการข้อผิดพลาดทั้งหมดหรือไม่
tryคำสั่งเดียวดังนั้นคุณไม่จำเป็นต้องตรวจสอบทุกการโทรหรือการดำเนินการ (โปรดทราบว่าบางภาษาดีกว่าภาษาอื่นในการตรวจหาข้อผิดพลาดอย่างง่ายเช่นค่าศูนย์หรือดัชนีอาเรย์นอกขอบเขต)
errno! ในกรณีที่คุณไม่คุ้นเคยในขณะที่มันเป็นความจริงที่ว่า "เกือบทุกฟังก์ชั่นจากไลบรารี C จะส่งกลับ 0 หรือ −1 หรือNULLเมื่อมีข้อผิดพลาด" พวกเขายังตั้งค่าerrnoตัวแปรทั่วโลกซึ่งคุณสามารถเข้าถึงได้โดยใช้#include <errno.h>เพียงแค่อ่าน errnoค่าของ ตัวอย่างเช่นหากopen(2) ส่งคืน-1คุณอาจต้องการตรวจสอบว่าerrno == EACCESจะระบุข้อผิดพลาดการอนุญาตหรือไม่หรือENOENTจะระบุว่าไฟล์ที่ร้องขอไม่มีอยู่
try/ catchแม้ว่าคุณสามารถจำลองด้วยการกระโดด