If the file is needed and the missing file is abnormal, I would throw an exception. Then it will be processed at a higher level, where you can decide what to do with the problem. If the application absolutely cannot work without the file in question, I would simply terminate it gracefully with the corresponding error message to show the exact problem for its users.
And, of course, I would try to check this file in advance before allocating other resources. Thus, fewer unnecessary things are done and less unused resources to free from abnormal completion.
source share