Error handling

What is Error handling?

Error handing āļ„āļ·āļ­ āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ” āļ‹āļķāđˆāļ‡āđ€āļ›āđ‡āļ™āļ„āļ§āļēāļĄāļœāļīāļ”āļžāļĨāļēāļ”āļ—āļĩāđˆāđ‚āļ”āļĒāļ—āļąāđˆāļ§āđ„āļ›āđāļĨāđ‰āļ§āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āļˆāļąāļ”āļāļēāļĢāļ āļēāļĒāđƒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄ āđ€āļĄāļ·āđˆāļ­āđ€āļāļīāļ” Error āļ‚āļķāđ‰āļ™āļ­āļēāļˆāļŠāđˆāļ‡āļœāļĨāđƒāļŦāđ‰āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāļĨāđ‰āļĄāđ€āļŦāļĨāļ§ āđ€āļŠāđˆāļ™ āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāđ„āļĄāđˆāļžāļ­ āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡ library āđ„āļĄāđˆāļ–āļđāļāļĢāļ­āļ‡āļĢāļąāļš āļāļēāļĢāđ€āļ›āļīāļ”āđ„āļŸāļĨāđŒāļ—āļĩāđˆāđ„āļĄāđˆāļĄāļĩāļ­āļĒāļđāđˆāļˆāļĢāļīāļ‡ āđ€āļ›āđ‡āļ™āļ•āđ‰āļ™ āļˆāļķāļ‡āļ•āđ‰āļ­āļ‡āļĄāļĩāļāļēāļĢāđ€āļ‚āļĩāļĒāļ™ Error handling āđ€āļžāļ·āđˆāļ­āđāļŠāļ”āļ‡āļŠāļēāđ€āļŦāļ•āļļāļ‚āļ­āļ‡āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āļ™āļąāđ‰āļ™āđāļĨāļ°āļ—āļģāđƒāļŦāđ‰āđ‚āļ›āļĢāđāļāļĢāļĄāļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļ‡āļēāļ™āļ•āđˆāļ­āđ„āļ›āđ„āļ”āđ‰

Different methods of Error handling

āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāļ āļēāļĐāļē C āđ„āļĄāđˆāđ„āļ”āđ‰āļĄāļĩāļāļēāļĢāļŠāļ™āļąāļšāļŠāļ™āļļāļ™āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ” (Error handling) āđ‚āļ”āļĒāļ•āļĢāļ‡ āļœāļđāđ‰āļ­āļ­āļāđāļšāļšāđ‚āļ›āļĢāđāļāļĢāļĄāļ•āđ‰āļ­āļ‡āļ—āļģāļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āļ‚āļķāđ‰āļ™āļĄāļēāđ€āļ­āļ‡ āđ‚āļ”āļĒāļāļēāļĢāđƒāļŠāđ‰āļ„āļģāļŠāļąāđˆāļ‡ return āļŠāđˆāļ‡āļ„āļ·āļ™āļ„āđˆāļē -1 āļŦāļĢāļ·āļ­ NULL āđƒāļ™āļāļĢāļ“āļĩāļ—āļĩāđˆāđ€āļāļīāļ”āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ” āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļ–āđ€āļ‚āļĩāļĒāļ™ Error handling āļ”āđ‰āļ§āļĒāļāļēāļĢāđƒāļŠāđ‰ 'āļ„āļģāļŠāļąāđˆāļ‡ if' āļ”āļąāļ‡āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡ āļāļēāļĢāļŦāļēāļĢāļ”āđ‰āļ§āļĒ 0 (Divide by Zero Errors) āļ”āļąāļ‡āļ•āđˆāļ­āđ„āļ›āļ™āļĩāđ‰

āļŠāļģāļŦāļĢāļąāļšāļ āļēāļĐāļē C++ āļˆāļ°āļĄāļĩāļ•āļąāļ§āļŠāļ™āļąāļšāļŠāļ™āļļāļ™āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ” āđ€āļĢāļĩāļĒāļāļ§āđˆāļē Exceptions handling āļ–āļķāļ‡āđāļĄāđ‰āļ§āđˆāļēāļˆāļ°āļĄāļĩāļ•āļąāļ§āļŠāļ™āļąāļšāļŠāļ™āļļāļ™āļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ” āđāļ•āđˆāļāđ‡āļŠāļēāļĄāļēāļĢāļ–āđ€āļ‚āļĩāļĒāļ™ Error handling āđ„āļ”āđ‰āđ€āļŦāļĄāļ·āļ­āļ™āļ āļēāļĐāļē c

// err_p1_1.c
#include <stdio.h> 

int solution(int a,int b)
{
    if (b > 0) { 
    
        return a / b; 
    } 

    return -1;
}   

int main() {
    printf("%d\n",solution(102,0));
    printf("%d\n",solution(955,5));
    printf("%d\n",solution(1650,2));     
    return 0;
}
-1
191
825

āļ­āļĒāđˆāļēāļ‡āļ—āļĩāđˆāļĢāļđāđ‰āļāļąāļ™āļ§āđˆāļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāļˆāļ°āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āļ„āļģāļ™āļ§āļ“āļ„āđˆāļēāļ—āļĩāđˆāđ€āļāļīāļ”āļˆāļēāļāļāļēāļĢāļŦāļēāļĢāļ”āđ‰āļ§āļĒ 0 āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāļˆāļ°āļŠāđˆāļ‡āļœāļĨāđƒāļŦāđ‰āđ€āļāļīāļ”āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āđƒāļ™āļāļēāļĢāļ—āļģāļ‡āļēāļ™āđāļĨāļ°āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļ‡āļēāļ™āļ•āđˆāļ­āđ„āļ›āđ„āļ”āđ‰ āđāļ•āđˆāļˆāļēāļāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļˆāļ°āđ€āļŦāđ‡āļ™āđ„āļ”āđ‰āļ§āđˆāļēāđ‚āļ›āļĢāđāļāļĢāļĄāļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļ‡āļēāļ™āļ•āđˆāļ­āđ„āļ›āđ„āļ”āđ‰āļ”āđ‰āļ§āļĒāļāļēāļĢāđ€āļ‚āļĩāļĒāļ™ Error handling return āļ„āđˆāļē -1

āļ‚āđ‰āļ­āđ€āļŠāļĩāļĒāļ‚āļ­āļ‡āļāļēāļĢāļŠāđˆāļ‡āļ„āđˆāļē return āļ„āļ·āļ­ āļˆāļ°āļ—āļģāđƒāļŦāđ‰āļ„āļ™āļ­āļ·āđˆāļ™āļ™āļ­āļāļˆāļēāļāļœāļđāđ‰āļ­āļ­āļāđāļšāļšāđ‚āļ›āļĢāđāļāļĢāļĄāđ„āļĄāđˆāļ—āļĢāļēāļšāļ§āđˆāļēāļ„āđˆāļē -1 āļ—āļĩāđˆāļ–āļđāļ return āļāļĨāļąāļšāļĄāļēāļ™āļąāđ‰āļ™āđ€āļāļīāļ”āļˆāļēāļāļŠāļēāđ€āļŦāļ•āļļāļ­āļ°āđ„āļĢ āļˆāļķāļ‡āđ„āļ”āđ‰āļĄāļĩāļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļēāļĢāļŦāļąāļŠāļ•āļąāļ§āđāļ›āļĢāļŠāđˆāļ§āļ™āļāļĨāļēāļ‡ (Global Variable) āđ€āļžāļ·āđˆāļ­āļĢāļ°āļšāļļāļ§āđˆāļēāļĢāļŦāļąāļŠāļ•āļąāļ§āđāļ›āļĢāļ—āļĩāđˆāļ›āļĢāļēāļāļāđ€āļāļīāļ”āļˆāļēāļāļŠāļēāđ€āļŦāļ•āļļāļ­āļ°āđ„āļĢ āļ‹āļķāđˆāļ‡āļŠāļēāļĄāļēāļĢāļ–āļ„āđ‰āļ™āļŦāļēāļĢāļŦāļąāļŠāļ•āļąāļ§āđāļ›āļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āļ•āđˆāļēāļ‡ āđ† āļ—āļĩāđˆāļāļģāļŦāļ™āļ”āđ„āļ§āđ‰āļˆāļēāļ <errno.h> āļ—āļĩāđˆāđ€āļ›āđ‡āļ™ header file āđ€āļĢāļĩāļĒāļāļ§āļīāļ˜āļĩāļ™āļĩāđ‰āļ§āđˆāļē Global Variable errno

Global Variable errno

Global Variable errno āļ–āļđāļāļ•āļąāđ‰āļ‡āļ„āđˆāļēāđ€āļ›āđ‡āļ™āļ•āļąāļ§āđāļ›āļĢāļŠāđˆāļ§āļ™āļāļĨāļēāļ‡āđāļĨāļ°āļĢāļ°āļšāļļāļ§āđˆāļēāļĄāļĩāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āļ­āļ°āđ„āļĢāļ—āļĩāđˆāđ€āļāļīāļ”āļ‚āļķāđ‰āļ™āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļāļēāļĢāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āđƒāļ” āđ† āļ‹āļķāđˆāļ‡āļŠāļēāļĄāļēāļĢāļ–āļ„āđ‰āļ™āļŦāļēāļĢāļŦāļąāļŠāļ•āļąāļ§āđāļ›āļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āļ—āļĩāđˆāļāļģāļŦāļ™āļ”āđ„āļ§āđ‰āļˆāļēāļ <errno.h> (āļ āļēāļĐāļē C++ āļŠāļēāļĄāļēāļĢāļ–āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āđ„āļ”āđ‰āļ—āļąāđ‰āļ‡āđāļšāļš <errno.h> āđāļĨāļ°āđāļšāļš <cerrno>) āļ”āļąāļ‡āļ™āļąāđ‰āļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđ€āļĄāļ­āļĢāđŒāļŠāļēāļĄāļēāļĢāļ–āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āđˆāļēāļ—āļĩāđˆāļŠāđˆāļ‡āļ„āļ·āļ™āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļ–āļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāļ—āļĩāđˆāđ€āļŦāļĄāļēāļ°āļŠāļĄāđ‚āļ”āļĒāļ‚āļķāđ‰āļ™āļ­āļĒāļđāđˆāļāļąāļšāļ„āđˆāļēāļ—āļĩāđˆāļŠāđˆāļ‡āļ„āļ·āļ™ āļ”āļąāļ‡āļ•āļēāļĢāļēāļ‡āļ•āđˆāļ­āđ„āļ›āļ™āļĩāđ‰

// err_p1_3.c
#include <stdio.h> 
#include <errno.h> 
  
int main() 
{ 
    // If a file is opened which does not exist, 
    // then it will be an error and corresponding 
    // errno value will be set 
    FILE * fp; 
  
    // opening a file which does 
    // not exist. 
    fp = fopen("text.txt", "r"); 
  
    printf(" Value of errno: %d\n ", errno); 
  
    return 0; 
} 
Value of errno: 2

āļˆāļēāļāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļˆāļ°āđ€āļŦāđ‡āļ™āļ§āđˆāļēāļ„āđˆāļēāļ•āļąāļ§āđāļ›āļĢ errno āļ—āļĩāđˆāļ–āļđāļāļŠāđˆāļ‡āļ­āļ­āļāļĄāļē āļ„āļ·āļ­ 2 āļŦāļĄāļēāļĒāļ„āļ§āļēāļĄāļ§āđˆāļē āđ‚āļ›āļĢāđāļāļĢāļĄāđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āđ€āļ›āļīāļ”āđ„āļŸāļĨāđŒāļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢ āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāđ„āļĄāđˆāļĄāļĩāđ„āļŸāļĨāđŒāļŦāļĢāļ·āļ­āđ„āļ”āđ€āļĢāđ‡āļāļ—āļ­āļĢāļĩāļ”āļąāļ‡āļāļĨāđˆāļēāļ§

āļ‚āđ‰āļ­āđ€āļŠāļĩāļĒāļ‚āļ­āļ‡āļāļēāļĢāđƒāļŦāđ‰āļŠāđˆāļ‡āļ„āđˆāļēāļ•āļąāļ§āđāļ›āļĢāđāļŠāļ”āļ‡āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āđ€āļžāļĩāļĒāļ‡āļ­āļĒāđˆāļēāļ‡āđ€āļ”āļĩāļĒāļ§ āļ„āļ·āļ­āļˆāļ°āļ—āļģāđƒāļŦāđ‰āđ€āļāļīāļ”āļ„āļ§āļēāļĄāļĒāļļāđˆāļ‡āļĒāļēāļāđƒāļ™āļāļēāļĢāļŦāļēāļ„āļģāļ­āļ˜āļīāļšāļēāļĒāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ” āļ”āļąāļ‡āļ™āļąāđ‰āļ™āļˆāļķāļ‡āđ„āļ”āđ‰āļĄāļĩāļŸāļąāļ‡āļāđŒāļŠāļąāļ™ perror() āđāļĨāļ° strerror() āđ€āļ‚āđ‰āļēāļĄāļēāļŠāđˆāļ§āļĒāđƒāļ™āļāļēāļĢāđāļŠāļ”āļ‡āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”

perror() and strerror()

  • perror() āļĒāđˆāļ­āļĄāļēāļˆāļēāļ print error āđ€āļ›āđ‡āļ™āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļ—āļĩāđˆāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāđāļŠāļ”āļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ‚āļ­āļ‡āļ„āđˆāļē errno āļ›āļąāļˆāļˆāļļāļšāļąāļ™ āđ‚āļ”āļĒāļ—āļĩāđˆāļŠāļēāļĄāļēāļĢāļ–āđāļŠāļ”āļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ—āļĩāđˆāļāļģāļŦāļ™āļ”āđ„āļ§āđ‰ āļāđˆāļ­āļ™āļāļēāļĢāđāļŠāļ”āļ‡āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”

void perror (char*msg);
  msg āļ„āļ·āļ­ āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāđāļšāļšāļāļģāļŦāļ™āļ”āđ€āļ­āļ‡āļāđˆāļ­āļ™āļāļēāļĢāđāļŠāļ”āļ‡āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”
// err_p1_5.c
// C program to illustrate the 
// use of perror() 
#include <errno.h> 
#include <stdio.h> 
#include <stdlib.h> 
  
// Driver Code 
int main() 
{ 
    FILE* fp; 
  
    // Now try to open same file 
    fp = fopen("file.txt", "r"); 
  
    if (fp == NULL) { 
  
        perror("Error: "); 
        return (-1); 
    } 
  
    // Close the file pointer 
    fclose(fp); 
  
    return (0); 
}
Error: : No such file or directory

  • strerror() āļ„āļ·āļ­ āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļ—āļĩāđˆāđƒāļŠāđ‰āļĢāļąāļšāļ„āđˆāļēāļ•āļąāļ§āđāļ›āļĢāļ‚āļ­āļ‡ errno āđ€āļžāļ·āđˆāļ­ return āļ‚āđ‰āļ­āļĄāļđāļĨāļ›āļĢāļ°āđ€āļ āļ— string āļĄāļēāđāļŠāļ”āļ‡āļœāļĨāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”

// err_p1_7.c
// C program to illustrate the 
// use of strerror() 
#include <errno.h> 
#include <stdio.h> 
#include <string.h> 
  
// Driver Code 
int main() 
{ 
    FILE* fp; 
  
    fp = fopen("file.txt", "r"); 
  
    if (fp == NULL) { 
  
        printf("Value of errno: %d\n ", errno); 
        printf("The error message is : %s\n",strerror(errno)); 
        return (-1); 
    } 
  
    // Close the file pointer 
    fclose(fp); 
  
    return (0); 
}
Value of errno: 2
The error message is : No such file or directory

āļ™āļ­āļāļˆāļēāļāļ™āļĩāđ‰āļĒāļąāļ‡āļĄāļĩāļŸāļąāļ‡āļāđŒāļŠāļąāļ™ ferror() āđāļĨāļ° clearerr() āļ—āļĩāđˆāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āđƒāļ™āļāļēāļĢ stream

āļĻāļķāļāļĐāļēāđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄ :: Error handling during file operations in C/C++

Exit Status

Exit Status āļˆāļ°āļ•āđˆāļēāļ‡āļˆāļēāļ errno, perror() āđāļĨāļ° strerror() āļ—āļĩāđˆāđ€āļ›āđ‡āļ™āļāļēāļĢāđāļŠāļ”āļ‡āļœāļĨāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ” āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđ‚āļ›āļĢāđāļāļĢāļĄāļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļ‡āļēāļ™āļ•āđˆāļ­āđ„āļ›āđ„āļ”āđ‰ āđāļ•āđˆ Exit Status āđ€āļ›āđ‡āļ™āļ„āļģāļŠāļąāđˆāļ‡āļ—āļĩāđˆāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ­āļ­āļāļˆāļēāļāđ‚āļ›āļĢāđāļāļĢāļĄ āđāļšāđˆāļ‡āļ­āļ­āļāđ€āļ›āđ‡āļ™ 2 āļ›āļĢāļ°āđ€āļ āļ— āļ„āļ·āļ­ Exit Success āđāļĨāļ° Exit Failure āļ‹āļķāđˆāļ‡āļ•āđ‰āļ­āļ‡āļ—āļģāļāļēāļĢ include āļāđˆāļ­āļ™ āļˆāļķāļ‡āļˆāļ°āļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āļ„āļģāļŠāļąāđˆāļ‡ exit()

1. Exit Success āļ„āļ·āļ­ āļāļēāļĢāļ­āļ­āļāļˆāļēāļāđ‚āļ›āđāļāļĢāļĄāļ—āļĩāđˆāđ„āļĄāđˆāđ€āļāļīāļ”āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ” āļŠāļēāļĄāļēāļĢāļ–āđ€āļĨāļ·āļ­āļāđƒāļŠāđ‰āđ„āļ”āđ‰ 2 āđāļšāļš āļ”āļąāļ‡āļ•āđˆāļ­āđ„āļ›āļ™āļĩāđ‰

exit(EXIT_SUCCESS)
exit(0)
// err_p2_1.c
#include <stdio.h> 
#include <stdio.h> 
  
int main() 
{ 
    FILE* file; 
  
    // opening the file in read-only mode 
    file = fopen("file.txt", "r"); 
  
    printf("File opening successful!"); 
  
    // EXIT_SUCCESS 
    exit(0); 
}
File opening successful!

2. Exit Failure āļ„āļ·āļ­ āļāļēāļĢāļ­āļ­āļāļˆāļēāļāđ‚āļ›āļĢāđāļāļĢāļĄāļ—āļĩāđˆāđ€āļāļīāļ”āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ” āļŠāļēāļĄāļēāļĢāļ–āđ€āļĨāļ·āļ­āļāđƒāļŠāđ‰āđ„āļ”āđ‰ 2 āđāļšāļš āļ”āļąāļ‡āļ•āđˆāļ­āđ„āļ›āļ™āļĩāđ‰

exit(EXIT_FAILURE)
exit(1)
// err_p2_3.c
#include <stdio.h> 
#include <stdlib.h>
  
int main() 
{ 
    FILE* file; 
  
    // open the file in read-only mode 
    file = fopen("myFile.txt", "r"); 
  
    if (file == NULL) { 
        printf("Error in opening file\n"); 
  
        // EXIT_FAILURE 
        exit(1); 
    } 
  
    // EXIT_SUCCESS 
    exit(0); 
} 

āđāļŦāļĨāđˆāļ‡āļ­āđ‰āļēāļ‡āļ­āļīāļ‡ ::

Last updated

Was this helpful?