C भाषा द्वारा एरर हैंडलिंग सीधे सपोर्ट नहीं की जाती। C भाषा में एरर हैंडलिंग करने के कुछ अन्य तरीके हैं। "error.h" हेडर फ़ाइल का उपयोग रिटर्न स्टेटमेंट फ़ंक्शन का उपयोग करके एरर प्रिंट करने के लिए किया जाता है।
किसी भी एरर के मामले में यह -1 या NULL लौटाता है और errno वेरिएबल एरर कोड के साथ सेट हो जाता है। जब भी C भाषा में किसी फ़ंक्शन को कॉल किया जाता है, तो errno वेरिएबल उससे जुड़ा होता है। errno एक ग्लोबल वेरिएबल है और इसका उपयोग एक्ज़ीक्यूशन में एरर के प्रकार का पता लगाने के लिए किया जाता है।
सामान्य एरर कोड
| क्रमांक | एरर और मान |
|---|---|
| 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' कंडीशन का उपयोग करके डिवाइजर मान की जांच कर सकते हैं।
उदाहरण
#include <stdio.h>
#include <stdlib.h>
int main() {
int x = 28;
int y = 8;
int z;
if (y == 0) {
fprintf(stderr, "शून्य से विभाजन!\n");
exit(EXIT_FAILURE);
}
z = x / y;
fprintf(stderr, "z का मान: %d\n", z);
exit(EXIT_SUCCESS);
}
आउटपुट
z का मान: 3