Error 错误码转字符串
将错误码转换为可读的英文错误描述字符串,用于日志打印与调试。
| 项目 | 说明 |
|---|---|
| 模块名 | Error(注意:模块名就是 Error,无 system. 前缀) |
| Feature 类型 | 标准 Feature |
| 所需权限 | 无 |
接口声明
{ "name": "Error" }导入方式
// 快应用标准写法(模块名无 system. 前缀,原样书写)
import error from 'Error'
// 本仓库运行时/测试中使用的写法
const error = require('Error')社区资料(洛汐文档库)记载部分运行时也支持带 @ 的写法 require('@Error');该模块名首字母大写,是快应用 Feature 模块,不是 JavaScript 内置的 Error 构造函数,二者不要混淆。
功能概述
Error Feature 只提供一个同步工具方法 strerror,用于把错误码(number)转换为对应的英文错误描述字符串。Native 实现直接封装 libuv 的 uv_strerror:对已知的 libuv 错误码(通常为负数,如 -2、-22)返回标准描述(如 "no such file or directory"、"invalid argument");对无法识别的错误码返回 "Unknown system error <errnum>"。该模块不依赖任何系统服务,也没有异步回调。
社区资料(洛汐文档库)提醒:该接口用于把 libuv/NuttX 风格的整数错误码转换为文本;不要把业务错误码、HTTP 状态码或 Feature 回调里的 code 直接传给它——只有底层采用 libuv 错误码时结果才有意义,未知编号只会返回通用的 unknown error 文本。
API
error.strerror(errnum)
返回错误码对应的错误描述字符串。同步方法,直接返回字符串,无 success/fail/complete 回调,也不返回 Promise。C++ 实现直接调用 uv_strerror(errnum),再复制成 Feature Framework 字符串。
参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| errnum | number(int) | 是 | 无 | 错误码。典型为 libuv 风格的负错误码(如其他 Feature 底层 IO 失败时的 errno 映射值) |
返回值
| 类型 | 说明 |
|---|---|
| string | 错误描述文本(英文)。已知 libuv 错误码返回对应描述;未知错误码返回 "Unknown system error <errnum>" |
示例
const error = require('Error')
// libuv 负错误码可得到标准描述
console.log(error.strerror(-2)) // "no such file or directory"
console.log(error.strerror(-22)) // "invalid argument"
// 无法识别的码值
console.log(error.strerror(999)) // "Unknown system error 999"
// 配合其他 Feature 的 fail 回调做日志(注意码值体系差异,见注意事项)
const file = require('system.file')
file.access({
uri: 'internal://files/not_exist.txt',
fail: function (msg, code) {
console.log('access failed, code =', code, 'desc =', error.strerror(code))
}
})社区资料(洛汐文档库)示例(@Error 写法):
const errorFeature = require('@Error')
const message = errorFeature.strerror(-2)
console.log(message)注意事项
- 同步调用:
strerror是 JIDL 中唯一直接返回string的方法(非void+ 回调模式),调用后立即拿到结果,不需要回调。 - 错误码体系差异(以 Native 实现为准):其他 Feature 的
fail回调给出的code是 Feature 框架的FT_ERR_*错误码(正数,如 200=通用错误、202=参数错误、300=IO 错误、301=路径不存在,定义见openvela/frameworks/runtimes/feature/include/feature_types.h),这些正数码不在 libuv 错误码表内,传给strerror会得到"Unknown system error 202"这样的结果;libuv 风格的负错误码(如-2ENOENT、-22EINVAL)才能得到"no such file or directory"、"invalid argument"等标准英文描述。因此 fail 回调里建议优先使用回调参数msg作为错误描述,strerror更适合对底层负错误码做翻译。 - 返回字符串为英文描述,具体文案与 libuv 版本一致,不做本地化。
机型支持明细
| 设备产品 | 说明 |
|---|---|
| 小米 S1 Pro 运动健康手表 | 支持 |
| 小米手环 8 Pro | 支持 |
| 小米手环 9 / 9 Pro | 支持 |
| Xiaomi Watch S3 | 支持 |
| Redmi Watch 4 | 支持 |
| 小米腕部心电血压记录仪 | 支持 |
| 小米手环 10 | 支持 |
| 小米手环 10 Pro | 支持 |
| Xiaomi Watch S4 | 支持 |
| REDMI Watch 5 | 支持 |
| REDMI Watch 6 | 支持 |
| Xiaomi Watch S5 | 支持 |
源码
openvela 快应用代码仓库:openvela/frameworks/runtimes/feature/(JIDL 接口与 Native 实现)、openvela/packages/(使用示例);引擎内置 Feature 预编译于 libquickappfeatures。
参考来源
- Vela官方快应用开发文档
- 洛汐文档库
- openvela快应用代码仓库:
openvela/frameworks/、openvela/packages/