The program requires the file to run, but if for any myriad number of reasons it can't be found or isn't readable, etc - what's the cleanest way to fail out of the program?
views:
125answers:
4If the file is required, and a missing file is abnormal, I would throw an exception. That would then be handled on a higher level, where it is possible to decide what to do about the problem. If the app absolutely can't run without the file in question, I would just terminate it gracefully with an appropriate error message to show the exact problem to its users.
And of course, I would strive to check early for this file, before allocating other resources. This way there is less unnecessary stuff done, and less unused resources to free upon abnormal termination.
Fail as you would fail in other cases:
- A command line program would output the unreadable file (full path) and the exact reason for not being able to read it on Stderr and exit with an error code. The functions
strerror()
andperror()
help you in verbalizing the failure reason. - A Gui would post an error message like the one above and exit after acknowledgement.
This type of error message should always include:
- the name by which the program tried to open the file
- the result of
strerror(errno)
on Unix, or the rather more convoluted Windows equivalent.
I'm thinking of these three steps:
First: print out the name of the file with a suitable error message.
Second: clean up the resources which your program has taken. free memory, close pipes, close sockets, delete temporary files, release mutexes ... .
Third: Terminate using exit()
.