That is to say, the question can only be answered in terms of the broader goals of the program, which are not known to the general-purpose library function. Nonetheless, exiting with an error message is only rarely the right answer. So instead of simply exiting with an error, the function may "establish restarts" offering various ways to continue—for instance, to skip the log entry, to supply default or null values for the unreadable fields, to ask the user for the missing values, "or" to unwind the stack and abort processing with an error message. The restarts offered constitute the "mechanisms" available for recovering from error; the selection of restart by the condition handler supplies the "policy".