ไม่รองรับการจัดการข้อผิดพลาดในภาษา C มีวิธีอื่นในการจัดการข้อผิดพลาดในภาษา C ไฟล์ส่วนหัว “error.h” ใช้เพื่อพิมพ์ข้อผิดพลาดโดยใช้ฟังก์ชันคำสั่งส่งคืน
คืนค่า -1 หรือ NULL ในกรณีที่เกิดข้อผิดพลาดและตัวแปร errno ถูกตั้งค่าด้วยรหัสข้อผิดพลาด เมื่อใดก็ตามที่มีการเรียกใช้ฟังก์ชันในภาษา C ตัวแปร errno จะเชื่อมโยงกับฟังก์ชันนั้น errno เป็นตัวแปรส่วนกลางและใช้เพื่อค้นหาประเภทของข้อผิดพลาดในการดำเนินการ
ตารางต่อไปนี้แสดงข้อผิดพลาดบางอย่าง -
| Sr.No | ข้อผิดพลาด &ค่าความผิดพลาด |
|---|---|
| 1 | ข้อผิดพลาดของ I/O 5 |
| 2 | ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว 2 |
| 3 | รายการอาร์กิวเมนต์ยาวเกินไป 7 |
| 4 | หน่วยความจำไม่เพียงพอ 12 |
| 5 | การอนุญาตถูกปฏิเสธ 13 |
มีวิธีการบางอย่างในการจัดการข้อผิดพลาดในภาษา C -
-
perror() − ฟังก์ชันนี้ใช้เพื่อพิมพ์ข้อผิดพลาดและส่งกลับสตริงพร้อมกับการแสดงข้อความของค่า errno ปัจจุบัน
-
strerror() − ฟังก์ชั่นนี้ถูกประกาศในไฟล์ส่วนหัว “string.h” และจะส่งกลับตัวชี้ไปยังสตริงของค่า errno ปัจจุบัน
-
สถานะการออก − มีค่าคงที่สองค่า EXIT_SUCCESS และ EXIT_FAILURE ซึ่งสามารถใช้ในฟังก์ชัน exit() เพื่อแจ้งฟังก์ชันการเรียกเกี่ยวกับข้อผิดพลาด
-
หารด้วยศูนย์ − นี่เป็นสถานการณ์ที่ไม่สามารถจัดการกับข้อผิดพลาดนี้ในภาษา C ได้ หลีกเลี่ยงข้อผิดพลาดนี้และคุณสามารถตรวจสอบค่าตัวหารได้โดยใช้เงื่อนไข 'if' ในโปรแกรม
นี่คือตัวอย่างการจัดการข้อผิดพลาดในภาษา C
ตัวอย่าง
#include <stdio.h>
#include <stdlib.h>
main() {
int x = 28;
int y = 8;
int z;
if( y == 0) {
fprintf(stderr, "Division by zero!\n");
exit(EXIT_FAILURE);
}
z = x / y;
fprintf(stderr, "Value of z : %d\n", z );
exit(EXIT_SUCCESS);
} ผลลัพธ์
นี่คือผลลัพธ์
Value of z : 3