当前位置: 首页 > news >正文

错误管理开发指导

        当应用的代 码存在规范问题或错误时,会在运行中产生异常和错误,如应用未捕获异常、应用生命周期超时等。在错误产生后,应用会异常退出。错误日志通常会保存在用户本地存储上,不方便开发者定位问题。所以,应用开发者可以使用错误管理的接口,在应用退出前,及时将相关错误及日志上报到开发者的服务平台来定位问题。

一、接口说明

        应用错误管理接口由errorManager模块提供,开发者可以通过import引入。 

        错误管理接口功能介绍:

接口名称说明
on(type: "error", observer: ErrorObserver): number注册错误监听接口,当系统监测到应用异常时会回调该监听。该接口为同步接口,返回值为注册的监听对象对应的序号。
off(type: "error", observerId: number, callback: AsyncCallback<void>): void以callback的形式解除注册监听,传入的number为之前注册监听时返回的序号。
off(type: "error", observerId: number): Promise<void>以Promise的形式解除注册监听,传入的number为之前注册监听时返回的序号。
on(type: 'loopObserver', timeout: number, observer: LoopObserver): void12+注册主线程消息处理耗时监听器,当系统监测到应用主线程事件处理超时时会回调该监听。只能在主线程调用,多次注册后,后一次的注册会覆盖前一次的。
off(type: 'loopObserver', observer?: LoopObserver): void12+解除应用主线程消息处理耗时监听。

        当采用callback作为异步回调时,可以在callback中进行下一步处理。当采用Promise对象返回时,可以在Promise对象中类似地处理接口返回值。 

        错误监听(ErrorObserver)接口功能介绍: 

接口名称说明
onUnhandledException(errMsg: string): void系统回调接口,应用注册后,当应用产生未捕获的异常时的回调。
onException?(errObject: Error): void系统回调接口,应用注册后,当应用产生异常上报js层时的回调。

        应用主线程监听(LoopObserver)接口功能介绍:

接口名称说明
onLoopTimeOut?(timeout: number): void12+系统回调接口,应用注册后,当应用主线程处理事件超时的回调。

二、解除注册结果码

结果码原因
0正常返回
-1传入的number不存在
-2参数错误

三、开发示例 

import { AbilityConstant, errorManager, UIAbility, Want } from '@kit.AbilityKit';
import { window } from '@kit.ArkUI';
import process from '@ohos.process';let registerId = -1;
let callback: errorManager.ErrorObserver = {onUnhandledException: (errMsg) => {console.log(errMsg);},onException: (errorObj) => {console.log('onException, name: ', errorObj.name);console.log('onException, message: ', errorObj.message);if (typeof(errorObj.stack) === 'string') {console.log('onException, stack: ', errorObj.stack);}//回调函数执行完,采用同步退出方式,避免多次触发let pro = new process.ProcessManager();pro.exit(0);}
}let abilityWant: Want;export default class EntryAbility extends UIAbility {onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {console.log("[Demo] EntryAbility onCreate");registerId = errorManager.on("error", callback);abilityWant = want;}onDestroy() {console.log("[Demo] EntryAbility onDestroy");errorManager.off("error", registerId, (result) => {console.log("[Demo] result " + result.code + ";" + result.message);});}onWindowStageCreate(windowStage: window.WindowStage) {// Main window is created, set main page for this abilityconsole.log("[Demo] EntryAbility onWindowStageCreate");windowStage.loadContent("pages/index", (err, data) => {if (err.code) {console.error('Failed to load the content. Cause:' + JSON.stringify(err));return;}console.info('Succeeded in loading the content. Data: ' + JSON.stringify(data));});}onWindowStageDestroy() {// Main window is destroyed, release UI related resourcesconsole.log("[Demo] EntryAbility onWindowStageDestroy");}onForeground() {// Ability has brought to foregroundconsole.log("[Demo] EntryAbility onForeground");}onBackground() {// Ability has back to backgroundconsole.log("[Demo] EntryAbility onBackground");}
};


http://www.mrgr.cn/news/42297.html

相关文章:

  • AI学习指南深度学习篇-权重正则化的变体及扩展应用
  • JavaScript 弹窗
  • wpf加载带材料的3D模型(下载的3D预览一样有纹理)
  • Java 每日一刊(第20期):I/O 流
  • 平衡BST:AVL树的实现与机制
  • ade20k 街景图像【数据集】及其【论文出处】ADE20K数据集 超过25000张图像的语义分割数据集
  • Linux命令大全及小例子
  • Python入门--判断语句
  • Linux: network: 典型网络延迟图,CPU导致;
  • 帝国CMS系统开启https后,无法登陆后台的原因和解决方法
  • Java | Leetcode Java题解之第455题分发饼干
  • 沉迷赌博卖妻卖女,演员吴晓亮被骂到微博沦陷
  • 开放式耳机与入耳式耳机的区别?分享开放式蓝牙耳机排行榜10强
  • 【EXCEL数据处理】000014 案例 EXCEL分类汇总、定位和创建组。附多个操作案例。
  • PyQt入门指南三 创建第一个PyQt应用程序
  • 【计算机理论基础】停机问题(Halting Problem)
  • 【硬件模块】HC-SR04超声波模块
  • PMP--三模--解题--131-140
  • The 14th Jilin Provincial Collegiate Programming Contest
  • 蘑菇分类检测数据集 21类蘑菇 8800张 带标注 voc yolo