Pavoo Pavoo - 1 year ago 67
C Question

C error handling at end of program

I have read through a lot of tutorials and beginner questions on error handling in C. They all (well most) seem to go in this direction:

int main(){

if(condition){
fprintf(stderr, "Something went wrong");
exit(EXIT_FAILURE); // QUIT THE PROGRAM NOW, EXAMPLE: ERROR OPENING FILE
}

exit(0)
}


My question: is there any particular function in C that lets me catch an error, but only affect the status of the program (main) when it exits? Example of my idea:

int main(){

if(condition){
fprintf(stderr, "Something went wrong");
// Continue with code but change exit-status for the program to -1 (EXIT_FAILURE)
}

exit(IF ERROR CATCHED = -1)
}


Or do I have to create some custom function or use some pointer?

usr usr
Answer Source

Well, you don't have to call exit() if you want to continue, right? You can use a variable that affects main()'s exit code.

#include <stdio.h>

int main(void){
   int main_exit_code = EXIT_SUCCESS;

   if(condition){
      fprintf(stderr, "Something went wrong");
      main_exit_code = -1; /* or EXIT_FAILURE */
   }

   return (main_exit_code);
}

But do note that depending on the kind of errors you encounter, it may not make sense to continue execution in all cases. So, I'll leave that to you decide.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download