Appearance
错误处理
错误代码参考 - ESP32 - — ESP-IDF 编程指南 latest 文档 (espressif.com)
除了ESP_OK以外都是错误信息, 这些信息一般以ESP_ERR开头
可以使用esp_err_to_name()
函数传递错误代码 0x101
,可以得到返回字符串 “ESP_ERR_NO_MEM”。
在 ESP-IDF 中,errno
是一个基于线程的局部变量,即每个 FreeRTOS 任务都有自己的 errno
副本,通过函数修改 errno
也只会作用于当前任务中的 errno
变量值。
错误检查
宏 ESP_ERROR_CHECK
的功能和 assert
类似,不同之处在于:这个宏会检查 esp_err_t
的值,而非判断 bool
条件。如果传给 ESP_ERROR_CHECK
的参数不等于 ESP_OK
,则会在控制台上打印错误消息,然后调用 abort()
函数。
宏 ESP_RETURN_ON_ERROR
用于错误码检查, 如果错误码不等于 ESP_OK
, 该宏会打印错误信息,并使原函数立刻返回。
宏 ESP_ERROR_CHECK_WITHOUT_ABORT
的功能和 ESP_ERROR_CHECK
类似, 不同之处在于它不会调用 abort()
.
ESP_GOTO_ON_ERROR
用于错误码检查, 如果错误码不等于 ESP_OK
, 该宏会打印错误信息,将局部变量 ret 赋值为该错误码, 并使原函数跳转至给定的 goto_tag.
宏 ESP_RETURN_ON_FALSE
用于条件检查, 如果给定条件不等于 true, 该宏会打印错误信息,并使原函数立刻返回,返回值为给定的 err_code.
宏 ESP_GOTO_ON_FALSE
用于条件检查, 如果给定条件不等于 true, 该宏会打印错误信息,将局部变量 ret 赋值为给定的 err_code, 并使原函数跳转至给定的 goto_tag.