错误码速查
灵动桌面框架的 CommandError 错误码参考(以 src-tauri/src/error.rs 为准)。
错误结构
interface CommandError {
code: string
message: string
}
命令失败时 invoke 的拒绝值就是这个对象。message 为 AppError 的显示文本,带有对应前缀,如 未找到: 配置项 'theme' 不存在。
错误码列表
| 错误码 | 来源(AppError 变体) | message 前缀 | 常见原因 |
|---|---|---|---|
INVALID_INPUT | InvalidInput | 参数无效: | 必填参数为空,如 set_config 的 key 为空;greet 的 name 为空(直接构造,message 为“名称不能为空”) |
NOT_FOUND | NotFound | 未找到: | 查询 / 删除的配置项不存在或已软删除 |
DATABASE_ERROR | Database | 数据库错误: | SQLite 执行失败 |
IO_ERROR | Io | IO 错误: | 文件读写失败 |
JSON_ERROR | Json | JSON 解析错误: | JSON 序列化 / 反序列化失败 |
INTERNAL | Custom | 无 | 其他内部错误,如数据库锁获取失败、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)
}
}