提交 bd2b97de 编写于 作者: DCloud-yyl's avatar DCloud-yyl

Update err-spec.md

上级 c597cf48
......@@ -24,9 +24,9 @@
```ts
//源错误信息
interface SourceError {
message: string,
subject?: string,
code?: number,
message?: string,
cause?: SourceError | UniAggregateError
}
......@@ -73,7 +73,7 @@ function CallBack(err:UniError){
## UniError
Uni统一错误信息,用于统一各平台(端)错误信息
- errSubject
统一错误主题(模块)名称,字符串类型,存在多级模块时使用"::"分割,即"模块名称::二级模块名称",详情参考[主题(模块)名称](#主题(模块)名称)
统一错误主题(模块)名称,字符串类型,存在多级模块时使用"::"分割,即"模块名称::二级模块名称",参考[errSubject(模块/主题)名称](#errSubject)
- errCode
统一错误码,数字类型,通常0表示成功,其它为错误码
对于已经实现的API,继续保留现有errCode规范(保留向下兼容)
......@@ -93,7 +93,7 @@ function CallBack(err:UniError){
```
## errSubject(模块/主题)名称
## errSubject(模块/主题)名称@errSubject
errSubject属性值表示返回错误的调用模块名称。
......@@ -117,4 +117,84 @@ errSubject属性值表示返回错误的调用模块名称。
- uni插件中返回错误时建议将“插件id”作为errSubject属性值,如果插件的API较多时可将每个API单独定义errSubject,建议使用errSubject属性值格式为“插件id-API名称”。
## uts插件或uvue页面中使用UniError
在uni-app、uni-app x中的错误信息建议统一使用UniError对象,以便在发生错误时统一捕获处理,特别是以下情况:
- 在uts插件中封装API给uni-app使用时,返回的错误信息要求使用UniError对象。
- 在uni-app x项目的uvue页面中,抛出错误要求使用UniError对象。
在App端,UniError和SourceError都是从uts的[Error](https://uniapp.dcloud.net.cn/uts/buildin-object-api/error.html)继承。
### 构造UniError对象
UniError对象必须通过 new 操作符构造
**语法**
```ts
new UniError()
new UniError(errSubject:string, errCode:number, errMsg:string)
```
**参数**
- errSubject
统一错误主题(模块)名称,字符串类型,存在多级模块时使用"::"分割,即"模块名称::二级模块名称",参考[errSubject(模块/主题)名称](#errSubject)
- errCode
统一错误码,数字类型,通常0表示成功,其它为错误码
- errMsg
统一错误描述信息,字符串类型,应准确描述引起的错误原因
**示例**
```
//创建一个UniError
let error = new UniError("uni-apidName", 60000, "Custom uni error");
//设置data数据(可选)
error.data = {
"dataName": "custom data value"
};
```
### 构造SourceError对象
当错误信息是有三方SDK或其它模块引起时,可以将三方SDK或其它模块的错误信息封装在SourceError中作为UniError的源错误
**语法**
```ts
new SourceError()
new SourceError(message:string)
```
**参数**
- message
源错误描述信息,字符串类型
**示例**
```
//创建一个SourceError
let sourceError = new SourceError("Third SDK error message");
//创建一个UniError
let error = new UniError("uni-apidName", 60000, "Custom uni error");
//设置源错误
error.cause = sourceError;
```
### 构造UniAggregateError对象
当错误是由多个SourceError源错误引起时,可以将多个源错误放到一个UniAggregateError对象中
**语法**
```ts
new UniAggregateError(errors:Array<SourceError>)
```
**参数**
- errors
源错误数组,Array<SourceError>类型
**示例**
```ts
//创建UniAggregateError
let aggregateError = new UniAggregateError([new SourceError("First 3rd SDK error message"), new SourceError("Second 3rd SDK error message")]);
//创建一个UniError
let error = new UniError("uni-apidName", 60000, "Custom uni error");
//设置源错误
error.cause = aggregateError;
```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册