错误码速查
灵动桌面框架的 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)
}
}