# 错误码 (/zh-CN/realtime-media/rtsa/reference/error-codes)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

声网 RTSA SDK 在运行过程中，可能通过如下方式返回错误码：

- 在方法调用失败的返回值中，返回一个负数，这个负数就对应着错误码的正数。
- 通过 `on_error` 回调报告错误码。

当收到错误码时，意味着 SDK 遇到了不可恢复的错误，需要 App 干预。本文列出常见错误码的详细含义及其解决方法。

## 通用错误 [#通用错误]

| 错误码 | 枚举值 | 说明 |
| --- | --- | --- |
| `0` | `ERR_OKAY` | 没有错误。 |
| `1` | `ERR_FAILED` | 通用错误。你可以根据日志文件排查问题。|
| `2` | `ERR_INVALID_PARAM` | 方法中设置无效的参数，例如指定的频道名中含有非法字符。请重新设置参数。|
| `3` | `ERR_INVALID_STATE` | 当前状态下调用 API 无效，例如关闭本地采集后就无法发布音视频。|
| `4` | `ERR_NOT_SUPPORTED` | 当前状态下不支持该操作。|
| `6` | `ERR_NOT_IN_CHANNEL` | 当前连接状态是未成功加入频道。 |
| `7` | `ERR_NOT_INITIALIZED` | 服务未完成初始化。请先调用 `init` 方法。|
| `8` | `ERR_NOT_EXIST_CONNECTION` | 连接不存在。|
| `10` | `ERR_TIMEDOUT` | API 调用超时。有些方法调用需要 SDK 返回结果，如果处理时间过长（超过 10 秒），SDK 会返回该错误。|
| `11` | `ERR_NO_MEMORY` | 内存不足。|
| `12` | `ERR_CALL_FAILED` | API 调用失败。|
| `14` | `ERR_NET_DOWN` | 当前网络不可用。你需要检查系统网络连接状态。|
| `17` | `ERR_JOIN_CHANNEL_REJECTED` | 加入频道请求被拒绝，可能是因为本地用户已在频道内。你需要调整代码逻辑，避免用户加入同一频道。|
| `18` | `ERR_LEAVE_CHANNEL_REJECTED` | 离开频道被拒。如果本地用户已经不在频道内，试图调用 API 离开频道时会返回该错误。|
| `23` | `ERR_LICENSE_VERIFICATION_FAILURE` | License 未通过验证导致的 SDK 初始化失败。该错误码仅在老版本的 License 下会反馈。 |
| `30` | `ERR_ENCRYPTION` | 加密错误。|
| `31` | `ERR_DECRYPTION` | 解密错误。|

## 传输相关 [#传输相关]

| 错误码 | 枚举值 | 说明 |
| --- | --- | --- |
| `101` | `ERR_INVALID_APP_ID` | 不是有效的 App ID。请更换有效的 App ID 重新加入频道。 |
| `102` | `ERR_INVALID_CHANNEL_NAME` | 不是有效的频道名。可能的原因是设置的参数数据类型不正确。请更换有效的频道名重新加入频道。 |
| `103` | `ERR_NO_SERVER_RESOURCES` | 无法获取指定区域的服务器资源。 |
| `105` | `ERR_LOOKUP_CHANNEL_REJECTED` | 声网服务器拒绝了查询频道的请求。你需要检查 RTC Token 是否有效。 |
| `107` | `ERR_OPEN_CHANNEL_REJECTED` | 声网服务器拒绝了创建频道的请求。你需要检查 RTC Token 是否有效。 |
| `109` | `ERR_TOKEN_EXPIRED` | [error-codes-c-html-0-6-2 details](#table-slot-error-codes-c-html-0-6-2) |
| `110` | `ERR_INVALID_TOKEN` | [error-codes-c-html-0-7-2 details](#table-slot-error-codes-c-html-0-7-2) |
| `115` | `ERR_DYNAMIC_TOKEN_BUT_USE_STATIC_KEY` | 在控制台中启用了 Token 鉴权，但调用 `join` 加入频道时传入的是 App ID。 |
| `119` | `ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED` | 切换用户角色失败。请尝试重新加入频道。 |
| `120` | `ERR_DECRYPTION_FAILED` | 解密失败。可能的原因是用户尝试使用不同的密码加入频道。请检查你的设置或尝试重新加入频道。 |
| `121` | `ERR_OPEN_CHANNEL_INVALID_TICKET` | 打开频道的信令错误。请尝试重新加入频道。 |
| `122` | `ERR_OPEN_CHANNEL_TRY_NEXT_VOS` | 系统在尝试切换服务器。通常不需要额外处理，系统会自动尝试切换服务器以打开频道。 |
| `123` | `ERR_CLIENT_IS_BANNED_BY_SERVER` | 该客户端被服务器禁用。你需要检查 License 是否正确。 |

<a id="table-slot-error-codes-c-html-0-6-2"></a>

**error-codes-c-html-0-6-2 details**

当前使用的 RTC Token 已过期。你需要重新在服务端申请生成 RTC Token 并调用 `agora_rtc_join_channel` 使用新生成的 RTC Token 重新加入频道。

Token 过期可能的原因有：

- 授权时间戳过期：Token 一旦生成，用户需要在 5 分钟内使用该 Token 加入频道，否则 Token 会失效。
- 通话有效时间戳过期：通话有效时间戳指用户不再能使用声网服务（如被强制离开当前通话）的时间戳。这种情况下，Token 没有过期，但是用户也会被踢出频道。

<a id="table-slot-error-codes-c-html-0-7-2"></a>

**error-codes-c-html-0-7-2 details**

Token 无效。可能的原因是：

- 在控制台中启用了 Token 鉴权，但调用 API 时没有传入 Token。
- 用户加入频道时使用的 `uid` 和生成 Token 时传入的 `uid` 不一致。

## 音频相关 [#音频相关]

| 错误码 | 枚举值 | 说明 |
| --- | --- | --- |
| `200` | `ERR_AUDIO_CODEC_NOT_SUPPORT` | SDK 不支持当前使用的音频编解码器。|
| `201` | `ERR_AUDIO_INVALID_PCM_LEN` | PCM 音频数据长度无效。|
| `202` | `ERR_AUDIO_INVALID_CODEC_PARAM` | 音频编解码器参数无效。|

## 视频相关 [#视频相关]

| 错误码 | 枚举值 | 说明 |
| --- | --- | --- |
| `300` | `ERR_VIDEO_SEND_OVER_BANDWIDTH_LIMIT` | 视频数据发送太快，且超出了带宽限制。当前发送速度下很可能发生丢包。|
| `301` | `ERR_VIDEO_SEND_PACKETIZE_FAILED` | 视频包打包失败。|

## RDT 相关 [#rdt-相关]

| 错误码 | 枚举值 | 说明 |
| --- | --- | --- |
| `600` | `ERR_RDT_USER_NOT_EXIST` | 频道内不存在该远端用户。|
| `601` | `ERR_RDT_USER_NOT_READY` | 未成功与远端用户建立连接。你需要等 RDT 通道的连接状态变为 `RDT_STATE_OPENED` 后重新调用方法。|
| `602` | `ERR_RDT_DATA_BLOCKED` | 发送缓冲区已满。你需要等 RDT 通道的连接状态变为 `RDT_STATE_OPENED` 后重新调用方法。|
| `603` | `ERR_RDT_CMD_EXCEED_LIMIT` | 控制消息的数量超过限制。每秒发送的控制消息包不能超过 100 条。|
| `604` | `ERR_RDT_DATA_EXCEED_LIMIT` | 数据消息的流量超过限制。每秒发送的数据量不能超过 4 Mbps。|

## RTM 相关 [#rtm-相关]

| 错误码 | 枚举值 | 说明 |
| --- | --- | --- |
| `1001` | `ERR_RTM_NOT_LOGINED` | 未登录 RTM 系统。|
| `1002` | `ERR_RTM_HAD_LOGINED` | 已登录 RTM 系统。|
| `1003` | `ERR_RTM_SEND_TO_SELF` | 在 `rtmUid` 参数中误填了自己的用户 ID。|
| `1004` | `ERR_RTM_EXCEED_MSG_SIZE` | RTM 消息长度超出限制。消息长度至多为 31 KB。|
| `1005` | `ERR_RTM_EXCEED_MSG_CNT` | RTM 消息发送频率超出限制。每秒至多发送 60 条消息。|
| `1006` | `ERR_RTM_EXCEED_SND_BUFFER` | 消息通道已满。等待一秒后重新发送。|
