提交 bc9e0484 编写于 作者: U unknown

add user

Signed-off-by: Nunknown <sijunjie@huawei.com>
上级 37adceac
...@@ -9,4 +9,5 @@ ...@@ -9,4 +9,5 @@
- 分布式跟踪 - 分布式跟踪
- [分布式跟踪概述](hitracechain-overview.md) - [分布式跟踪概述](hitracechain-overview.md)
- [分布式跟踪开发指导](hitracechain-guidelines.md) - [分布式跟踪开发指导](hitracechain-guidelines.md)
- 错误管理
- [错误管理开发指导](errormanager-guidelines.md)
\ No newline at end of file
# 错误管理开发指导
## 场景介绍
当应用的代码存在一些不规范或者错误时,会在运行中产生一些异常和错误,如:应用未捕获异常、应用生命周期超时等等。产生错误后,应用会异常退出,这些错误日志通常都会保存在用户本地存储上,应用开发者在定位问题的时候就会产生不变。应用的开发者可以使用错误管理的相关接口,在应用退出前,把相关的错误及其日志上报到自己的服务平台来定位问题。
## 接口说明
应用错误管理接口由[errorManager](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.application.errorManager.d.ts)模块提供。
**错误管理接口功能介绍:**
| 接口名 | 返回值 | 描述 |
| ------------------------------------------------------------ | -------------- | ---------------------------------------------------- |
| registerErrorObserver(observer: ErrorObserver) | number | 注册错误监听接口,当系统监测到应用对应的异常时会回调该监听。该接口为同步接口,返回值为该监听对应的序号。 |
| unregisterErrorObserver(observerId: number, callback: AsyncCallback<void>) | void | 以callback的形式解除注册监听,传入的number为之前注册监听返回的序号。 |
| unregisterErrorObserver(observerId: number) | Promise<void> | 以Promise的形式解除注册监听,传入的number为之前注册监听返回的序号。 |
当采用callback作为异步回调时,可以在callback中进行下一步处理。当采用Promise对象返回时,可以在Promise对象中类似地处理接口返回值。具体结果码说明见[解除注册结果](#解除注册结果)
**错误监听(ErrorObserver)接口功能介绍:**
| 接口名 | 返回值 | 描述 |
| ------------------------------ | ------- | ------------------------------------------------------------ |
| onUnhandledException(errMsg: string) | void | 系统回调接口,应用注册后,当应用产生未捕获的异常时由应用回调。 |
### 解除注册结果码
| 结果码 | 原因 |
| ------ | --------------------------- |
| 0 | 正常返回 |
| -1 | 传入的number不存在 |
| -2 | 参数错误 |
## 开发示例
```js
import Ability from '@ohos.application.Ability'
import errorManager from '@ohos.application.errorManager'
var registerId = -1;
var callback = {
onUnhandledException: function (errMsg) {
console.log(errMsg);
}
}
export default class MainAbility extends Ability {
onCreate(want, launchParam) {
console.log("[Demo] MainAbility onCreate")
globalThis.abilityWant = want;
}
onDestroy() {
console.log("[Demo] MainAbility onDestroy")
}
onWindowStageCreate(windowStage) {
// Main window is created, set main page for this ability
console.log("[Demo] MainAbility onWindowStageCreate")
globalThis.registerObserver = (() => {
registerId = errorManager.registerErrorObserver(callback);
})
globalThis.unRegisterObserver = (() => {
errorManager.unregisterErrorObserver(registerId, (result) => {
console.log("[Demo] result " + result.code + ";" + result.message)
});
})
windowStage.setUIContent(this.context, "pages/index", null)
}
onWindowStageDestroy() {
// Main window is destroyed, release UI related resources
console.log("[Demo] MainAbility onWindowStageDestroy")
}
onForeground() {
// Ability has brought to foreground
console.log("[Demo] MainAbility onForeground")
}
onBackground() {
// Ability has back to background
console.log("[Demo] MainAbility onBackground")
}
};
```
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册