ErrorManager捕获js异常

​在错误产生后,提供对错误观察器的注册和注销的能力。使用场景:应用想要捕获js crash。

HarmonyOS
2024-05-26 16:17:58
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
jshyb

使用的核心API

  • onUnhandledException(errMsg: string): void
  • onException?(errObject: Error): void;

核心代码解释

错误观察器注册

let registerId = -1; 
let callback: errorManager.ErrorObserver = { 
  onUnhandledException: (errMsg) => { 
    console.log("应用产生未捕获的异常时的回调,onUnhandledException----------------------- " + errMsg); 
    console.log(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; 
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { 
  
    //注册错误监听接口,当系统监测到应用异常时会回调该监听。 
    // 该接口为同步接口,返回值为注册的监听对象对应的序号 
    registerId = errorManager.on("error", callback); 
    abilityWant = want; 
  } 
  
  onDestroy(): void { 
    //以callback的形式解除注册监听,传入的number为之前注册监听时返回的序号。 
    errorManager.off("error", registerId, (result) => { 
      console.log("result " + result.code + ";" + result.message) 
    }); 
  }

错误测试

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

实现效果

分享
微博
QQ
微信
回复
2024-05-27 21:44:36
相关问题
如何捕获应用发生的异常
269浏览 • 1回复 待解决
烧录捕获异常信息,怎么解决?
7297浏览 • 2回复 待解决
JS调用PA出现RemoteInterfaceProxy异常
5581浏览 • 2回复 待解决
Redistemplate报nullpointer异常
3574浏览 • 1回复 待解决
import Sample 里异常显示
5187浏览 • 1回复 待解决
@Builder使用引用时异常
466浏览 • 1回复 待解决
@Watch异常有了解的吗?
1774浏览 • 1回复 待解决
如何监听系统应用异常
624浏览 • 1回复 待解决
调用 window.getWindowAvoidArea 时抛出异常
747浏览 • 1回复 待解决
使用TextPicker控件显示异常的问题
395浏览 • 1回复 待解决