HarmonyOS 鸿蒙Next errorManager error事件的onException回调触发时机

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next errorManager error事件的onException回调触发时机 目前在ArkTS层触发的JS Crash,触发onUnhandledException,那么onException回调在什么场景下触发?希望提供下触发的示例demo

2 回复

onUnhandledException和onException监听的是同一种异常。监听到的异常场景都是一样的,只是onUnhandledException回调的是字符串,onException回调的是错误对象。可以看api: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-inner-application-errorobserver-V5

示例demo:

在EntryAbility中,设置异常监听

let observer: errorManager.ErrorObserver = {
  onUnhandledException(errorMsg) {
    console.error('onUnhandledException, errorMsg: ', errorMsg);
  },
  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);
    }
  }
};

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
    try {
      let reid = errorManager.on('error', observer);
    } catch (error) {
      console.error(`registerErrorObserver failed, error.code: ${error.code}, error.message: ${error.message}`);
    }
  }
}

在index.ets中创造异常:

aboutToAppear(): void {
  setTimeout(() => {
    let tempList = ['0', '1']
    tempList[5].toString()
  }, 100)
}

更多关于HarmonyOS 鸿蒙Next errorManager error事件的onException回调触发时机的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,errorManagererror事件的onException回调触发时机主要与应用程序中异常的处理相关。具体来说,当应用程序在运行时遇到未捕获的异常或特定类型的错误时,onException回调会被触发。

触发onException回调的几种典型情况包括:

  1. 未捕获异常:应用程序中的代码抛出了异常,但该异常没有被任何try-catch块捕获。此时,系统会调用errorManageronException方法,传递异常信息。

  2. 系统级错误:在某些情况下,系统检测到应用程序执行了非法的操作或遇到了无法恢复的错误状态,也可能会触发onException回调。

  3. 预定义的错误场景:开发者可以在应用程序中预定义某些错误场景,并在这些场景发生时手动触发errorManagererror事件,从而调用onException回调。

需要注意的是,onException回调的触发时机和具体行为可能受到鸿蒙系统版本、应用程序的配置以及具体的异常类型等因素的影响。

如果开发者希望详细了解onException回调的触发条件和机制,建议参考鸿蒙系统的官方文档或相关开发指南。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部