C ভাষা সরাসরি এরর হ্যান্ডলিং সাপোর্ট করে না। তবে C-তে এরর হ্যান্ডলিং করার অন্য কিছু উপায় রয়েছে। "error.h" হেডার ফাইলটি রিটার্ন স্টেটমেন্ট ফাংশন ব্যবহার করে এরর প্রিন্ট করতে ব্যবহৃত হয়।
এরর হলে এটি -1 বা NULL রিটার্ন করে এবং errno ভেরিয়েবলটি এরর কোড সহ সেট হয়। C-তে যখনই কোনো ফাংশন কল করা হয়, errno ভেরিয়েবলটি তার সাথে যুক্ত থাকে। errno একটি গ্লোবাল ভেরিয়েবল যা এক্সিকিউশনে এরর টাইপ খুঁজে বের করতে ব্যবহৃত হয়।
নিচের টেবিলে কিছু এরর দেখানো হয়েছে:
| Sr.No | Errors & Error value |
|---|---|
| 1 | I/O Error 5 |
| 2 | No such file or directory 2 |
| 3 | Argument list too long 7 |
| 4 | Out of memory 12 |
| 5 | Permission denied 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