Are there any industry best practices on error checking that one can refer to when writing code for espressif chips in ESP-IDF? I'm familiar with the use of esp_err_t and ESP_LOGs, but wondering if there's a certain approach that works well to make sure code recovers easily from failures and how many times to retry a certain piece of code before giving up altogether and publishing an error to a user interface. For instance, do people set up a separate error service and implement it across all their files, or do they locally implement different error checks in each of their code files (assuming a project has multiple files)? Any such guidance would be greatly appreciated since I haven't done much work on error checks and recovery.