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) āļāļąāļāļāđāļāđāļāļāļĩāđ
// 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>) āļāļąāļāļāļąāđāļāđāļāļĢāđāļāļĢāļĄāđāļĄāļāļĢāđāļŠāļēāļĄāļēāļĢāļāļāļĢāļ§āļāļŠāļāļāļāđāļēāļāļĩāđāļŠāđāļāļāļ·āļāđāļĨāļ°āļŠāļēāļĄāļēāļĢāļāļāļģāđāļāļīāļāļāļēāļĢāļāļĩāđāđāļŦāļĄāļēāļ°āļŠāļĄāđāļāļĒāļāļķāđāļāļāļĒāļđāđāļāļąāļāļāđāļēāļāļĩāđāļŠāđāļāļāļ·āļ āļāļąāļāļāļēāļĢāļēāļāļāđāļāđāļāļāļĩāđ

errno value āļāļ°āđāļĄāđāļĄāļĩāđāļĨāļ 0 āđāļāļ·āđāļāļāļāļēāļāđāļĨāļ 0 āļŦāļĄāļēāļĒāļāļķāļāđāļĄāđāļĄāļĩāļāđāļāļāļīāļāļāļĨāļēāļāđāļāđāļāļĢāđāļāļĢāļĄ
// 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() āđāļāđāļēāļĄāļēāļāđāļ§āļĒāđāļāļāļēāļĢāđāļŠāļāļāļāđāļāļāļīāļāļāļĨāļēāļ
āļāļģāļāļēāļĄ āļāļģāļŠāļąāđāļ FILE *fp āđāļĨāļ° fopen āļāļ·āļāļāļ°āđāļĢ
āļāļģāļāļāļ āđāļāđāļāļĢāļđāļāđāļāļāļāļēāļĢāļāļĢāļ°āļāļēāļĻāđāļāđāļĄāļāđāļāļĄāļđāļĨāđāļĨāļ°āđāļāļīāļāđāļāđāļĄāļāđāļāļĄāļđāļĨ
āļāđāļāļĄāļđāļĨāļāđāļēāļāđāļāļīāđāļĄāđāļāļīāļĄ :: āļāļ·āđāļāļāļēāļāļāļēāļĢāļāļģāļāļēāļāļāļāļāđāļāļĨāđ
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
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)
āļŠāļĢāđāļēāļāđāļāļĨāđ file.txt āļāđāļāļ run code āļāļąāļāļāđāļāđāļāļāļĩāđ
// 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);
}
āļŠāļģāļŦāļĢāļąāļ exit(EXIT_FAILURE) āļŠāļēāļĄāļēāļĢāļāđāļāđāļāļģāļāļ§āļāđāļāđāļĄāļāļ·āđāļāļāļĩāđāđāļĄāđāđāļāđ 1 āđāļāļ·āđāļāļĢāļ°āļāļļāļāđāļāļāļīāļāļāļĨāļēāļāļāļĢāļ°āđāļ āļāļāđāļēāļāđ
āđāļŦāļĨāđāļāļāđāļēāļāļāļīāļ ::
Last updated
Was this helpful?