There will be times where you may not want the entire program execution to die if you encounter a problem. Instead, it's always a good idea to get into the habit of handling problems gracefully. For example, always test to see if an open or rename fails and then decide what to do at that point. Issuing a die might be an appropriate reaction. Or, depending on the program in question, you might want to log that error information somewhere, retry the action that failed or perform some other function instead of issuing a die.
You really have to decide on a case by case basis as to what makes the most sense. The main thing to keep in mind is to always check return values and be prepared to handle error conditions.