快应用 FeatureFeature API

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 字符串。

参数

参数类型必填默认值说明
errnumnumber(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 风格的负错误码(如 -2 ENOENT、-22 EINVAL)才能得到 "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。

参考来源

大纲