ในฐานะโปรแกรมเมอร์ที่ดีคนหนึ่งควรเขียนโค้ดที่มีประสิทธิภาพซึ่งจะจัดการกับผลลัพธ์ทุกรายการของโปรแกรมของเขา อย่างไรก็ตามฟังก์ชันเกือบทั้งหมดจากไลบรารี 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
แม้ว่าคุณสามารถจำลองด้วยการกระโดด