1# ErrorObserver
2
3定义异常监听,可以作为[ErrorManager.on](js-apis-app-ability-errorManager.md#errormanageronerror)的入参监听当前应用发生的异常。
4
5> **说明:**
6>
7> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
9## 导入模块
10
11```ts
12import { errorManager } from '@kit.AbilityKit';
13```
14
15## ErrorObserver.onUnhandledException
16
17onUnhandledException(errMsg: string): void;
18
19将在js运行时引发用户未捕获的异常时调用。
20
21**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
22
23**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
24
25**参数:**
26
27| 参数名 | 类型 | 必填 | 说明 |
28| -------- | -------- | -------- | -------- |
29| errMsg | string | 是 | 有关异常的消息和错误堆栈跟踪。 |
30
31**示例:**
32
33```ts
34import { errorManager } from '@kit.AbilityKit';
35import { BusinessError } from '@kit.BasicServicesKit';
36
37let observer: errorManager.ErrorObserver = {
38  onUnhandledException(errorMsg) {
39    console.error('onUnhandledException, errorMsg: ', errorMsg);
40  }
41};
42
43try {
44  errorManager.on('error', observer);
45} catch (error) {
46  console.error(`registerErrorObserver failed, error.code: ${(error as BusinessError).code}, error.message: ${(error as BusinessError).message}`);
47}
48```
49
50## ErrorObserver.onException<sup>10+</sup>
51
52onException?(errObject: Error): void;
53
54将在js运行时引发用户未捕获的异常时调用。
55
56**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
57
58**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
59
60**参数:**
61
62| 参数名 | 类型 | 必填 | 说明 |
63| -------- | -------- | -------- | -------- |
64| errObject | Error | 是 | 有关异常事件名字、消息和错误堆栈信息的对象。 |
65
66**示例:**
67
68```ts
69import { errorManager } from '@kit.AbilityKit';
70import { BusinessError } from '@kit.BasicServicesKit';
71
72let observer: errorManager.ErrorObserver = {
73  onUnhandledException(errorMsg) {
74    console.error('onUnhandledException, errorMsg: ', errorMsg);
75  },
76  onException(errorObj) {
77    console.log('onException, name: ', errorObj.name);
78    console.log('onException, message: ', errorObj.message);
79    if (typeof (errorObj.stack) === 'string') {
80      console.log('onException, stack: ', errorObj.stack);
81    }
82  }
83};
84
85try {
86  errorManager.on('error', observer);
87} catch (error) {
88  console.error(`registerErrorObserver failed, error.code: ${(error as BusinessError).code}, error.message: ${(error as BusinessError).message}`);
89}
90```
91