HarmonyOS 鸿蒙Next中使用ErrorManager捕获异常

HarmonyOS 鸿蒙Next中使用ErrorManager捕获异常 https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-arkts-81-V5

Index.ets

@Entry 
@Component 
struct Index { 
  @State message: string = '捕获异常'; 
 
  build() { 
    Row() { 
      Column() { 
        Button(this.message) 
          .onClick(() => { 
            let tempList = ['0', '1']; 
            tempList[5].toString(); 
          }) 
      } 
      .width('100%') 
    } 
    .height('100%') 
  } 
}

EntryAbility.ets中:

import { AbilityConstant, errorManager, UIAbility, Want } from '@kit.AbilityKit'; 
import { hilog } from '@kit.PerformanceAnalysisKit'; 
import { window } from '@kit.ArkUI'; 
 
let callback: errorManager.ErrorObserver = { 
  onUnhandledException: (errMsg) => { 
    console.log('产生未捕获异常时的回调,onUnhandledException:', errMsg); 
  }, 
  onException: (errorObj) => { 
    console.log('产生异常上报JS层时的回调,onException'); 
    console.log('onException, name: ', errorObj.name); 
    console.log('onException, message: ', errorObj.message); 
    if (typeof (errorObj.stack) === 'string') { 
      console.log('onException, stack: ', errorObj.stack); 
    } 
  } 
} 
let abilityWant: Want; 
let registerId = -1; 
 
export default class EntryAbility extends UIAbility { 
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { 
    console.log('[Demo] EntryAbility onCreate'); 
    registerId = errorManager.on('error', callback); 
    abilityWant = want; 
    console.log('registerId:', registerId); 
  } 
 
  onDestroy(): void { 
    console.log('[Demo] EntryAbility onDestroy'); 
    errorManager.off('error', registerId, (result) => { 
      console.log('[Demo] result' + result.code + ';' + result.message); 
    }); 
  } 
  // ... 
}

更多关于HarmonyOS 鸿蒙Next中使用ErrorManager捕获异常的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS Next中,ErrorManager是用于异常捕获的核心类。通过ErrorManager.on(‘error’)注册监听器,可以捕获应用运行时的JavaScript异常。使用方式为在代码中设置错误监听,当发生异常时触发回调并获取错误信息。ErrorManager提供异步错误处理机制,适用于ArkTS开发场景。

更多关于HarmonyOS 鸿蒙Next中使用ErrorManager捕获异常的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,ErrorManager提供了异常捕获机制,通过注册回调函数处理JS层的异常。你的代码示例展示了正确的使用方式:在EntryAbility的onCreate中注册error事件监听,并在onDestroy中取消注册,以避免内存泄漏。

当Index.ets中的按钮点击触发数组越界异常时,ErrorManager会通过onException回调捕获异常信息,包括异常名称、消息和堆栈。这有助于调试和错误处理,确保应用稳定性。注意区分onUnhandledException(未处理异常)和onException(异常上报)的使用场景。

回到顶部