主要参考资料
B站Up主孤独的二进制《错误处理 - 乐鑫 ESP32 物联网开发框架 ESP-IDF 开发入门》
ESP-IDF编程指南>API指南>错误消息: https://docs.espressif.com/projects/esp-idf/zh_CN/v5.1/esp32s3/api-guides/error-handling.html
ESP-IDF编程指南>API指南>严重错误: https://docs.espressif.com/projects/esp-idf/zh_CN/v5.1/esp32s3/api-guides/fatal-errors.html
上面有说,比如错误码就是ESP-IDF里的esp_err_t类型,使用 if 判断可以打印出来。
当然,错误码看起来不直观,ESP-IDF还提供了API可以转换为具体的错误消息,它在esp_err.c中有定义。
不可恢复错误的第二类和第三类属于底层代码,一般不需要我们动,它会自己重启处理。
对于可恢复错误里的错误码,可以使用断言(assert)处理,只是在ESP-IDF中有专有的断言API。
有如下几种:
以ESP_ERROR_CHECK为例,非ESP_OK就会导致重启和打印。
打印信息如下:
另一个在ESP-IDF源码中比较常见的是goto语句