错误码
除 ltv_run()、句柄创建和返回结构体的接口外,公开 API 使用 ltv_error_t 返回结果。
| 错误码 | 含义 | 常见原因 |
|---|---|---|
LTV_OK | 成功 | 操作已接受或完成 |
LTV_ERR_INVALID_ARG | 参数无效 | 空句柄、空字符串、结构体版本错误、尺寸非法 |
LTV_ERR_INVALID_STATE | 当前状态不允许 | Runtime 生命周期错误、View 已关闭、存在未释放 frame |
LTV_ERR_WRONG_THREAD | 线程错误 | 未在调用 ltv_run() 的线程执行 API |
LTV_ERR_LOAD_FAILED | 加载启动失败 | URL 或 HTML 无法提交给 View |
LTV_ERR_JS_EXCEPTION | JavaScript 执行失败 | 脚本异常或结果无法序列化为 JSON |
LTV_ERR_IO | I/O 失败 | PNG 文件无法写入等 |
LTV_ERR_INTERNAL | 内部错误 | 原生 surface 或运行时内部操作失败 |
LTV_ERR_UNSUPPORTED | 功能不支持 | 当前平台或 delivery mode 未实现 |
LTV_ERR_RESOURCE_EXHAUSTED | 资源不足 | 内存或内部资源分配失败 |
处理原则
const ltv_error_t result = ltv_view_navigate(view, url);
if (result != LTV_OK) {
LogLitheViewError("navigate", result);
}
- 不要忽略初始化、attach、resize、导航和销毁的返回值。
INVALID_ARG通常是调用契约错误,应在开发阶段直接修正。INVALID_STATE需要结合生命周期、未决异步请求和 GPU frame lease 排查。WRONG_THREAD不应通过重试解决,应修正任务投递边界。UNSUPPORTED不会自动降级;宿主应选择已支持的能力或明确禁用功能。
JavaScript 错误
ltv_view_eval() 把详细错误放在 ltv_eval_result_t.error 中。无论成功或失败,都应释放两个可拥有字段:
ltv_eval_result_t result = ltv_view_eval(view, script);
if (result.code != LTV_OK) {
LogError(result.error);
}
ltv_free(result.json_result);
ltv_free(result.error);