You can eliminate a lot of error handling by asking what you want to have happen under particular conditions, i.e., what’s the goal? Can it be met in another way?
The reason libraries deal with error propagation issues is because they don’t know the context of their use. They don’t know what is supposed to happen when an “error” occurs.
Right. There are few things more frustrating as a library consumer than one which calls fprintf(3C), or worse, exit(2) on your behalf when it encounters something unexpected.