跳到正文
灵动桌面框架
Esc
本栏目菜单

错误码速查

灵动桌面框架的 CommandError 错误码参考(以 src-tauri/src/error.rs 为准)。

错误结构

interface CommandError {
  code: string
  message: string
}

命令失败时 invoke 的拒绝值就是这个对象。message 为 AppError 的显示文本,带有对应前缀,如 未找到: 配置项 'theme' 不存在。

错误码列表

错误码来源(AppError 变体)message 前缀常见原因
INVALID_INPUTInvalidInput参数无效: 必填参数为空,如 set_config 的 key 为空;greet 的 name 为空(直接构造,message 为“名称不能为空”)
NOT_FOUNDNotFound未找到: 查询 / 删除的配置项不存在或已软删除
DATABASE_ERRORDatabase数据库错误: SQLite 执行失败
IO_ERRORIoIO 错误: 文件读写失败
JSON_ERRORJsonJSON 解析错误: JSON 序列化 / 反序列化失败
INTERNALCustom无其他内部错误,如数据库锁获取失败、Schema 版本高于应用支持的版本

另外,前端 src/lib/api/client.ts 的 parseCommandError 在无法解析出 code / message 时返回 UNKNOWN,这是前端兜底值,后端不会产生。

前端处理示例

import { message } from 'antd'
import { configApi, type CommandError } from '@/lib/api'

try {
  await configApi.set(key, value)
  message.success('保存成功')
} catch (e) {
  const error = e as CommandError
  switch (error.code) {
    case 'INVALID_INPUT':
      message.warning(error.message)
      break
    case 'NOT_FOUND':
      message.info('配置项不存在')
      break
    default:
      message.error('操作失败:' + error.message)
  }
}