C
错误处理
Qt Quick Ultralite 库中发生的致命错误通过可以在应用程序代码中实现的 API 报告。该 API 可用于编写自定义日志消息或存储错误事件。该实现不能再与 GUI 交互,并应最终重新启动设备或执行类似操作。
警告:错误处理器不得返回,因为整个软件栈已经处于无效状态。
Qt Quick Ultralite 库提供了一个默认实现,当应用没有提供实现时使用。
默认错误处理器按以下格式将错误报告打印到 Qul::Platform::PlatformContext::consoleWrite:
Qt for MCUs error: <errorRange>:<errorString>:<errorCode>, line: <lineNumber>, params: <param1>, <param2>, <param3>.
errorRange
- 与错误相关的区域/模块。例如,Core,Platform 或 Custom。errorString
- 描述 错误代码 常量的字符串,但没有QulError_
前缀。在发布构建中将为空。errorCode
- QulError 的数值。lineNumber
- 错误发生的行号。param1
、param2
和param3
- 提供有关错误额外信息的整数值。
默认处理器打印错误消息后暂停程序,并进入无限循环以保存回溯以供调试。
QulError 提供了 Qt Quick Ultralite 报告的误差代码列表。
注:一些误差代码仅在调试构建中可用。要启用全部误差检查,Qt Quick Ultralite Core 和 Platform 需要使用调试构建配置重新构建。
报告自定义错误
错误通过 Qul::PlatformInterface::error 报告。断言语句使用 QUL_ASSERT 完成,它在表达式求值为 false 的情况下调用 Qul::PlatformInterface::error。
Qt Quick Ultralite 预留了 Core
和 Platform
范围的错误代码值。自定义错误代码从值 QulError_Custom + 1 开始。
enum CustomErrorCodes { CustomError_Foo = QulError_Custom + 1, CustomError_Bar };
可以使用整数参数 param1
、param2
和 param3
提供可选信息。以下示例测试 someValue
是否大于 5。如果断言失败,将通过 param1
显示 someValue
的实际值。
uint8_t someValue = 6; QUL_ASSERT(someValue > 5, static_cast<QulError>(CustomError_Bar), someValue);
设置自定义错误处理器
使用 Qul::setErrorHandler 设置自定义错误处理器。
在特定 Qt 许可证下提供。
了解更多信息。