# 错误捕捉
从 USV 0.7 开始, uCode 封装了一套错误模板, 目前可以用在 连接 和 积木块 执行
# 使用 uCode 自定义的错误
我们已经在 SDK 里封装了自定义的错误工具, 你可以直接使用, 如下:
import { ErrorTool } from "@ubtech/ucode-extension-common-sdk";
const myError = ErrorTool.getCustomError({
errorCode: "Hello MyError",
});
ErrorTool.getCustomError()
会返回一个 UCodeCustomError
, 这是一个 uCode 封装的自定义错误
# 错误的类型以及字段
# UCodeCustomError
字段 | 必填 | 类型 | 积木块使用支持 | 描述 |
---|---|---|---|---|
errorCode | ✅ | string | ✅ | 错误的代码, 字符串, 最好是唯一的, 用于区分自定义错误的类型 |
message | string | ✅ | 错误信息, 由于 UCodeCustomError 是继承自 Error 错误类, message 也会赋值给 Error | |
extraData | UCodeErrorType.ExtraData | ❎ | 这是 uCode 特有的额外增加的数据, 用于更多的功能定义 |
# UCodeErrorType.ExtraData
ExtraData
分为三种类型的错误:
类型 | 名字 | 积木块使用支持 | 描述 |
---|---|---|---|
MarkdownErrorType | Markdown 错误类型 | ❎ | 可以使用 Markdown 文档支持更多的类型 |
ImageErrorType | 图片错误类型 | ❎ | 图片错误类型 |
TextErrorType | 文字错误类型 | ✅ | 文字错误类型 |
积木块中使用
上面的表格也有标注
目前 积木块中使用, 只支持 文字类型的错误, 并且不支持 errorTitle
和 errorAction
他们三个都会有共有的错误字段:
# 共有字段
字段 | 必填 | 类型 | 积木块使用支持 | 描述 |
---|---|---|---|---|
errorTitle | string | ❎ | 错误标题, 可以用于自定义错误模板的标题 | |
errorAction | ErrorAction ErrorAction[] | ❎ | 错误的动作, 该错误动作, 用于做一些错误处理, 例如, 断开重连, 或者返回给插件用于自定义错误处理(例如, wifi 配网等) |
# MarkdownErrorType 特有字段
如字面意思, MarkdownErrorType
就是指 Markdown 类型的错误
字段 | 必填 | 类型 | 默认值 | 描述 |
---|---|---|---|---|
type | ✅ | string | 'markdown' | 定义该错误类型为 markdown |
content | ✅ | string | Markdown 的内容, 图片可以是在线的 URL 或者 base64 编码的图片 |
使用案例:
代码如下:
ErrorTool.getCustomError({
errorCode: "HARDWARE_IMAGE_ERROR",
message: "Markdown错误模板",
extraData: {
type: "markdown",
errorTitle: "Markdown错误模板",
content: `# Heading level 1
<img src="https://img-baofun.zhhainiao.com/fs/32054fe01be9b24ecb512144b391181c.jpg" width="360" />
## Heading level 2
### Heading level 3
#### Heading level 4
##### Heading level 5
###### Heading level 6
Heading level 1
===============
Heading level 2
---------------`,
},
});
# ImageErrorType 特有字段
如字面意思, ImageErrorType
就是指 带图片 类型的错误
字段 | 必填 | 类型 | 默认值 | 描述 |
---|---|---|---|---|
type | ✅ | string | 'image' | 定义该错误类型为 image |
image | ✅ | string | 图片的 URL 地址, 或者是 base64 URI, 最小在 180(宽) 最大在 512(宽) 之间, 高度不限制 |
案例如下:
代码如下:
ErrorTool.getCustomError({
errorCode: "HARDWARE_IMAGE_ERROR",
message: "图片错误模板",
extraData: {
type: "image",
errorTitle: "硬件连接出错",
image: ImageTip, // 这里放置图片路径, 或者 import
},
});
# TextErrorType 特有字段
如字面意思, TextErrorType
纯文字错误, 不赋值 type
类型 默认就是 文字类型, message
就是 作为文字
字段 | 必填 | 类型 | 默认值 | 描述 |
---|---|---|---|---|
type | string | 'text' | 定义该错误类型为 文字 |
和 Markdown, Image 不一样的是
文字错误可以不赋值 type
甚至是 extraData
例如:
getCustomError({
errorCode: "mini-connection-timeout",
message: "连接失败,请确认悟空机器人和电脑在同一个网络,且电量大于20%,请将悟空机器人升级至最新版本",
extraData: {
errorTitle: "连接超时",
},
});
# ErrorAction 错误处理
uCode 自定义一套错误处理, 可以用于错误之后做一些后续的动作
ErrorAction 需要和 DeviceConnection
一起使用
ErrorAction 的定义如下:
字段 | 必填 | 类型 | 默认值 | 描述 |
---|---|---|---|---|
id | ✅ | string | 需唯一, 用于执行哪个错误方法 | |
type | 'cancel', 'confirm' | 'confirm' | 错误按钮的样式 | |
name | string | '' | 错误按钮显示的文字 |
下面举一个案例:
下面这个是 uCodeLink 的检查错误处理:
分为两个错误处理, 分别是:
- 下载
- 启动
代码如下:
getCustomError({
errorCode: 'UCODE_LINK_NOT_READY',
message: Messages.UCODE_LINK_NOT_READY,
extraData: {
type: 'image',
errorTitle: Messages.UCODE_LINK_NOT_READY_TITLE,
image: UCodeLinkPng,
errorAction: [
{ // 这是下载的处理
id: 'download-ucodelink',
name: Messages.UCODE_LINK_DOWNLOAD_TEXT,
type: 'cancel',
},
{ // 这是启动的处理
id: 'start-ucodelink',
name: Messages.UCODE_LINK_START_TEXT,
type: 'confirm',
},
],
},
});
那点击之后错误处理, 是怎么执行的?
目前错误处理是和 DeviceConnection
接口配合一起使用的
← 调试 自定义 UI (Beta) →