Error Handling in C Programming

Error Handling in C Program:

There is no direct support for Error Handling in C language. However, using the return statement in a function, there are few methods and variables defined in error.h header file that can be used to point out the error.  A programmer has to prevent errors in the first place before testing return values from the functions.  In C, the function return NULL or -1 value in case of any error. There is a global variable errno which sets the error code/number. Hence, while programming the return value can be used to check error.

What is errno?

When a function is called in C, a variable named errno is automatically assigned a code (value) which can be used to identify the type of error that has been encountered. It is a global variable indicating the error occurred during any function call and defined in the header file errno.h.

List of few different errno values and its corresponding meaning:
errno values and its corresponding meaning in C Language
Example:
#include <stdio.h>
#include <errno.h>
int main ()
{
    FILE *fp;
    fp = fopen ("File.txt", "r");
    printf (" Value of errno: %d\n ", errno);
    return 0;
}

Output:

Error Handling in C Program
Functions used to display a text message associated with errorno

perror(): It returns the string you pass to it, followed by a colon, a space, and then the textual representation of the current errno value.

Syntax: void perror (const char *str) where str is a string containing a message to be printed.

strerror(): It returns a pointer to the textual representation of the current errno value.

Syntax: char *strerror (int errnum) where errnum is the error number.

Example
#include <stdio.h>
#include <errno.h>
#include <string.h>
int main ()
{
    FILE *fp;
    fp = fopen (" File.txt ", "r");
    printf ("Value of errno: %d\n", errno);
    printf ("The error message is : %s\n", strerror (errno));
    perror ("Message from perror");
    return 0;
}

Output:

How to Handle Error in C Programming Language
Divide by Zero Error in C Program

Sometimes at the time of dividing any number, programmers do not check if a divisor is zero and finally it creates a runtime error. Because C Language cannot do anything about it. All you can do is, avoid it.

Example
#include<stdio.h>
#include <stdlib.h>
void function (int);
int main ()
{
    int x = 0;
    function (x);
    return 0;
}
void function (int x)
{
    float fx;
    if (x == 0)
    {
        printf ("Division by Zero is not allowed \n");
        fprintf (stderr, "Division by zero! Exiting...\n");
        exit (EXIT_FAILURE);
    }
    else
    {
        fx = 10 / x;
        printf ("f(x) is: %.5f", fx);
    }
}

Output:

Divide by Zero Error in C Program
Exit Status

The Exit Status constants are used in the exit() function to inform the calling function about the error. EXIT_SUCCESS and EXIT_FAILURE are the two constant values available for use. These are macros defined in stdlib.h which indicates successful or unsuccessful termination, respectively.

Example
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
int main ()
{
    FILE *fp;
    fp = fopen ("filedoesnotexist.txt", "rb");
    if (fp == NULL)
    {
        printf ("Value of errno: %d\n", errno);
        printf ("Error opening the file: %s\n", strerror (errno));
        perror ("Error printed by perror");
        exit (EXIT_FAILURE);
        printf ("I will not be printed\n");
    }
    else
    {
        fclose (fp);
        exit (EXIT_SUCCESS);
        printf ("I will not be printed\n");
    }
    return 0;
}

Output:

Error Handling in C Program with Examples
Follow Us On