SRTCError,它继承 Error,并额外带以下字段:
toString() 输出 "{code}: {detail}",方便日志里一行同时拿到码和描述。
另有静态方法 SRTCError.isServerError(e: Object): boolean(1.1.0 起):e 是 SRTCError 且码在后端业务区间 1000–99999 时返回 true。用它区分「后端业务错误(不必重试)」与「网络 / 解码失败(可重试)」——不要写成 e instanceof SRTCError,108006 / 108011 也是 SRTCError。
错误码是怎么拼出来的
- SDK 内部错误:原始码 < 1000,会被加上平台前缀拼成 6 位数。
HarmonyOS 的 RTC 前缀是
108,所以内部错误码形如108001、108231。 - 业务后端透传的错误码:1000–99999 原样保留,不再加前缀。
- HTTP 状态码不会拼进错误码(1.1.0 起):网络失败 / HTTP 非 200 一律
108006,HTTP 状态只在httpStatus与detail里。
baseCode。
code 与 kind 不是一一对应的。 HTTP API 请求失败的 kind 一律是 apiRequestFailed,code 按原因区分:- 后端返回业务错误:
code为后端码(≥ 1000,原样透出) - 网络失败 / HTTP 非 200,或后端返回了 < 1000 的异常码:
108006(HTTP 状态见httpStatus) - 响应不是 JSON、缺
code字段或缺必需字段:108011
kind 分支时,apiRequestFailed 里还要再看 code。报错语言
detail一律英文,给开发者和日志看,会随版本调整;不要拿它做分支判断,也不要直接展示给终端用户,请按code/baseCode自行映射提示文案。SRTC.setLanguage(lang)(1.1.0 起,缺省跟随系统语言)决定请求后端时的Accept-Language头,后端业务错误(1000–99999)的文案随之返回中文或英文;SDK 自身报错不受它影响。
连接相关
信令相关
WebRTC / 传输相关
轨道与采集相关
采集失败一律是
SRTCError(1.1.0 起)。 此前采集失败直接抛系统 BusinessError 或空 Error;现在统一包装,原 BusinessError.code 放 systemCode、原异常放 cause。以前按 e.code === 201 判断无权限的代码,改为判断 kind(cameraPermissionDenied / micPermissionDenied)。摄像头 / 麦克风的 108231 / 108251 主要来自采集前的只读权限预检:SDK 不申请权限、不弹授权框,权限由宿主申请,见集成方式。频道成员相关
流媒体(发布 / 订阅)相关
引擎正在重连时发布 / 订阅报的是
108014(稍后可重试),不是 108300 / 108301。
引擎与通用错误
108027–108030 在统一码表里是虚拟背景相关码,鸿蒙 SDK 不使用。推荐的处理方式
SRTCError 映射成你们自己的错误域,而不是把英文 detail 直接展示给最终用户。