@ohos.app.ability.errorManager (错误管理模块)

ErrorManager模块提供对错误观测器的注册和注销的能力,主要是观测应用发生js crash和appfreeze等错误。

说明

本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

import { errorManager } from '@kit.AbilityKit';

errorManager.on('error')

on(type: 'error', observer: ErrorObserver): number

注册错误观测器。注册后可以捕获到应用产生的js crash,属于应用崩溃的一种。观测器捕获到该异常时应用不退出,建议在回调函数执行完后,增加同步退出操作。

仅在主线程中使用。使用线程出错时,将抛出错误码,因此建议使用try-catch逻辑进行处理。

原子化服务API:从API version 11开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数

参数名 类型 必填 说明
type string 填写'error',表示错误观测器。
observer ErrorObserver 错误观测器。

返回值

类型 说明
number 观测器的索引值,与观测器一一对应。可用于errorManager.off函数中的observerId参数。

错误码

以下错误码详细介绍请参考通用错误码元能力子系统错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameter types; 3. Parameter verification failed.
16000003 The specified ID does not exist.

示例

import { errorManager } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

let observer: errorManager.ErrorObserver = {
  onUnhandledException(errorMsg) {
    console.info('onUnhandledException, errorMsg: ', errorMsg);
  },
  onException(errorObj) {
    console.info('onException, name: ', errorObj.name);
    console.info('onException, message: ', errorObj.message);
    if (typeof(errorObj.stack) === 'string') {
      console.info('onException, stack: ', errorObj.stack);
    }
  }
};
let observerId = -1;

try {
  observerId = errorManager.on('error', observer);
} catch (paramError) {
  let code = (paramError as BusinessError).code;
  let message = (paramError as BusinessError).message;
  console.error(`error: ${code}, ${message}`);
}

errorManager.on('globalErrorOccurred')18+

on(type: 'globalErrorOccurred', observer: GlobalObserver): void

在进程中的任意线程中注册 errormanager.on 接口,监听整个进程中任意线程的异常。观测器捕获到该异常时应用不退出,建议在回调函数执行完后,增加同步退出操作。

原子化服务API:从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数

参数名 类型 必填 说明
type string 填写'globalErrorOccurred',表示错误观测器。
observer GlobalObserver 自定义异常处理回调函数。

错误码

以下错误码详细介绍请参考通用错误码元能力子系统错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameter types; 3. Parameter verification failed.
16200001 If the caller is invalid.

示例

import { errorManager } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

function errorFunc(observer: errorManager.GlobalError) {
    console.info("result name :" + observer.name);
    console.info("result message :" + observer.message);
    console.info("result stack :" + observer.stack);
    console.info("result instanceName :" + observer.instanceName);
    console.info("result instanceType :" + observer.instanceType);
}

try {
  errorManager.on('globalErrorOccurred', errorFunc);
} catch (paramError) {
  let code = (paramError as BusinessError).code;
  let message = (paramError as BusinessError).message;
  console.error(`error: ${code}, ${message}`);
}

errorManager.off('globalErrorOccurred')18+

off(type: 'globalErrorOccurred', observer?: GlobalObserver): void

注销错误观测器,注销之前注册在同一线程的callback全局监听。

如果传入的回调不在通过on方法注册的回调队列中,将抛出16300004错误码,因此建议使用try-catch逻辑进行处理。

原子化服务API:从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数

参数名 类型 必填 说明
type string 填写'globalErrorOccurred',表示错误观测器。
observer GlobalObserver 由on方法注册的callback。建议使用该参数,缺省时默认清除所有通过on注册的相同env的callback,否则删除指定callback。

错误码

以下错误码详细介绍请参考通用错误码元能力子系统错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameter types; 3. Parameter verification failed.
16200001 If the caller is invalid.
16300004 If the observer does not exist.

示例

import { errorManager } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

function errorFunc(observer: errorManager.GlobalError) {
    console.info("result name :" + observer.name);
    console.info("result message :" + observer.message);
    console.info("result stack :" + observer.stack);
    console.info("result instanceName :" + observer.instanceName);
    console.info("result instanceType :" + observer.instanceType);
}

try {
  errorManager.off('globalErrorOccurred', errorFunc)
} catch (paramError) {
  let code = (paramError as BusinessError).code;
  let message = (paramError as BusinessError).message;
  console.error(`error: ${code}, ${message}`);
}

errorManager.off('error')

off(type: 'error', observerId: number, callback: AsyncCallback<void>): void

注销错误观测器。使用callback异步返回。

仅在主线程中使用。使用线程出错时,将抛出错误码,因此建议使用try-catch逻辑进行处理。

原子化服务API:从API version 11开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数

参数名 类型 必填 说明
type string 填写'error',表示错误观测器。
observerId number 由on方法返回的观测器的index值。
callback AsyncCallback<void> 表示指定的回调方法。

错误码

以下错误码详细介绍请参考通用错误码元能力子系统错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameter types; 3. Parameter verification failed.
16000003 The specified ID does not exist.

示例

import { errorManager } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

let observerId = 100;

function unregisterErrorObserverCallback(err: BusinessError) {
  if (err) {
    console.error('------------ unregisterErrorObserverCallback ------------', err);
  }
}

try {
  errorManager.off('error', observerId, unregisterErrorObserverCallback);
} catch (paramError) {
  let code = (paramError as BusinessError).code;
  let message = (paramError as BusinessError).message;
  console.error(`error: ${code}, ${message}`);
}

errorManager.off('error')

off(type: 'error', observerId: number): Promise<void>

注销错误观测器。使用Promise异步返回。

仅在主线程中使用。使用线程出错时,将抛出错误码,因此建议使用try-catch逻辑进行处理。

原子化服务API:从API version 11开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数

参数名 类型 必填 说明
type string 填写'error',表示错误观测器。
observerId number 由on方法返回的观测器的index值。

返回值

类型 说明
Promise<void> Promise对象。无返回结果的Promise对象。

错误码

以下错误码详细介绍请参考通用错误码元能力子系统错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameter types; 3. Parameter verification failed.
16000003 The specified ID does not exist.

示例

import { errorManager } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

let observerId = 100;

try {
  errorManager.off('error', observerId)
    .then((data) => {
      console.info('----------- unregisterErrorObserver success ----------', data);
    })
    .catch((err: BusinessError) => {
      console.error('----------- unregisterErrorObserver fail ----------', err);
    });
} catch (paramError) {
  let code = (paramError as BusinessError).code;
  let message = (paramError as BusinessError).message;
  console.error(`error: ${code}, ${message}`);
}

errorManager.on('loopObserver')12+

on(type: 'loopObserver', timeout: number, observer: LoopObserver): void

注册主线程消息处理耗时监听器。注册后可以捕获到应用主线程处理消息的具体执行时间。

仅在主线程中使用。使用线程出错时,将抛出错误码,因此建议使用try-catch逻辑进行处理。

原子化服务API:从API version 12开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数

参数名 类型 必填 说明
type string 填写'loopObserver',表示注册主线程消息处理耗时监听器。
timeout number 表示事件执行阈值(单位:毫秒)。 阈值必须大于0。
observer LoopObserver 注册主线程消息处理耗时监听器。

错误码

以下错误码详细介绍请参考通用错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameter types; 3. Parameter verification failed.

示例

import { errorManager } from '@kit.AbilityKit';

let observer: errorManager.LoopObserver = {
  onLoopTimeOut(timeout: number) {
    console.info('Duration timeout: ' + timeout);
  }
};

errorManager.on("loopObserver", 1, observer);

errorManager.on('globalUnhandledRejectionDetected')18+

on(type: 'globalUnhandledRejectionDetected', observer: GlobalObserver): void

在进程中任意线程注册被拒绝promise监听器,注册后可以捕获到当前进程中未被捕获到的promise rejection。

原子化服务API:从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数

参数名 类型 必填 说明
type string 填写'globalUnhandledRejectionDetected',表示注册被拒绝promise监听器。
observer GlobalObserver 注册被拒绝promise的callback。

错误码

以下错误码详细介绍请参考通用错误码元能力子系统错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameter types; 3. Parameter verification failed.
16200001 If the caller is invalid.

示例

import { errorManager } from '@kit.AbilityKit';

function promiseFunc(observer: errorManager.GlobalError) {
  console.info("result name :" + observer.name);
  console.info("result message :" + observer.message);
  console.info("result stack :" + observer.stack);
  console.info("result instanceName :" + observer.instanceName);
  console.info("result instanceType :" + observer.instanceType);
}

errorManager.on("globalUnhandledRejectionDetected", promiseFunc);
// 建议在抛出promise异常时,使用async抛出异常。
async function throwError() {
  throw new Error("uncaught error");
}

let promise1 = new Promise<void>(() => {}).then(() => {
  throwError();
});

errorManager.on('unhandledRejection')12+

on(type: 'unhandledRejection', observer: UnhandledRejectionObserver): void

注册被拒绝promise监听器。注册后可以捕获到当前线程中未被捕获到的promise rejection。

仅在主线程中使用。使用线程出错时,将抛出错误码,因此建议使用try-catch逻辑进行处理。

原子化服务API:从API version 12开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数

参数名 类型 必填 说明
type string 填写'unhandledRejection',表示注册被拒绝promise监听器。
observer UnhandledRejectionObserver 注册被拒绝promise监听器。

错误码

以下错误码详细介绍请参考通用错误码元能力子系统错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameter types; 3. Parameter verification failed.
16200001 If the caller is invalid.

示例

import { errorManager } from '@kit.AbilityKit';

let observer: errorManager.UnhandledRejectionObserver = (reason: Error, promise: Promise<void>) => {
  if (promise === promise1) {
    console.info("promise1 is rejected");
  }
  console.info("reason.name: ", reason.name);
  console.info("reason.message: ", reason.message);
  if (reason.stack) {
    console.info("reason.stack: ", reason.stack);
  }
};

errorManager.on("unhandledRejection", observer);

let promise1 = new Promise<void>(() => {}).then(() => {
  throw new Error("uncaught error");
});

errorManager.on('freeze')18+

on(type: 'freeze', observer: FreezeObserver): void

注册应用主线程freeze监听。多次注册情况下,取最后一次注册的结果。

仅在主线程中使用。使用线程出错时,将抛出错误码,因此建议使用try-catch逻辑进行处理。

注意

如果该回调函数执行时间超过1s,可能导致AppRecovery功能不可用。通过解析hilog日志中的begin与Freeze callback execution completed两者的时间差可以计算回调函数执行时长,如果超过1秒,可以尝试采用异步处理、减少阻塞操作、优化数据结构等方法优化回调逻辑,降低执行时长。

原子化服务API:从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数

参数名 类型 必填 说明
type string 填写'freeze',表示应用主线程freeze观测器。
observer FreezeObserver 由on接口注册的freeze监听的callback。

错误码

以下错误码详细介绍请参考通用错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.

示例

import { errorManager } from '@kit.AbilityKit';

function freezeCallback() {
    console.info("freezecallback");
}
errorManager.on("freeze", freezeCallback);

errorManager.off('loopObserver')12+

off(type: 'loopObserver', observer?: LoopObserver): void

注销主线程消息处理监听器。

仅在主线程中使用。使用线程出错时,将抛出错误码,因此建议使用try-catch逻辑进行处理。

原子化服务API:从API version 12开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数

参数名 类型 必填 说明
type string 填写'loopObserver',表示应用主线程观测器。
observer LoopObserver 应用主线程观测器标志。

错误码

以下错误码详细介绍请参考通用错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameter types; 3. Parameter verification failed.

示例

import { errorManager } from '@kit.AbilityKit';

errorManager.off("loopObserver");

errorManager.off('globalUnhandledRejectionDetected')18+

off(type: 'globalUnhandledRejectionDetected', observer?: GlobalObserver): void

注销被拒绝promise监听器,注销后无法监听进程中的promise异常。

如果传入的回调不在通过on方法注册的回调队列中,将抛出16300004错误码,因此建议使用try-catch逻辑进行处理。

原子化服务API:从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数

参数名 类型 必填 说明
type string 填写'globalUnhandledRejectionDetected',表示注册被拒绝promise监听器。
observer GlobalObserver 由on接口注册的被拒绝promise的callback。建议使用该参数,缺省时默认清除所有通过on注册的相同env的callback,否则删除指定callback。

错误码

以下错误码详细介绍请参考通用错误码元能力子系统错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameter types; 3. Parameter verification failed.
16200001 If the caller is invalid.
16300004 If the observer does not exist.

示例

import { errorManager } from '@kit.AbilityKit';

function promiseFunc(observer: errorManager.GlobalError) {
  console.info("result name :" + observer.name);
  console.info("result message :" + observer.message);
  console.info("result stack :" + observer.stack);
  console.info("result instanceName :" + observer.instanceName);
  console.info("result instanceType :" + observer.instanceType);
}

errorManager.on("globalUnhandledRejectionDetected", promiseFunc);

async function throwError() {
  throw new Error("uncaught error");
}

let promise1 = new Promise<void>(() => {}).then(() => {
  throwError();
});

errorManager.off("globalUnhandledRejectionDetected", promiseFunc);

errorManager.off('unhandledRejection')12+

off(type: 'unhandledRejection', observer?: UnhandledRejectionObserver): void

注销被拒绝promise监听器。

仅在主线程中使用。使用线程出错时,将抛出错误码,因此建议使用try-catch逻辑进行处理。

原子化服务API:从API version 12开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数

参数名 类型 必填 说明
type string 填写'unhandledRejection',表示注册被拒绝promise监听器。
observer UnhandledRejectionObserver 注册了被拒绝promise监听器。建议使用该参数,缺省时默认清除所有通过on注册的相同env的observer,否则删除指定observer。

错误码

以下错误码详细介绍请参考通用错误码元能力子系统错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameter types; 3. Parameter verification failed.
16200001 If the caller is invalid.
16300004 If the observer does not exist.

示例

import { errorManager } from '@kit.AbilityKit';

let observer: errorManager.UnhandledRejectionObserver = (reason: Error, promise: Promise<void>) => {
  if (promise === promise1) {
    console.info("promise1 is rejected");
  }
  console.info("reason.name: ", reason.name);
  console.info("reason.message: ", reason.message);
  if (reason.stack) {
    console.info("reason.stack: ", reason.stack);
  }
};

errorManager.on("unhandledRejection", observer);

let promise1 = new Promise<void>(() => {}).then(() => {
  throw new Error("uncaught error")
})

errorManager.off("unhandledRejection");

或者

import { errorManager } from '@kit.AbilityKit';

let observer: errorManager.UnhandledRejectionObserver = (reason: Error, promise: Promise<void>) => {
  if (promise === promise1) {
    console.info("promise1 is rejected");
  }
  console.info("reason.name: ", reason.name);
  console.info("reason.message: ", reason.message);
  if (reason.stack) {
    console.info("reason.stack: ", reason.stack);
  }
};

errorManager.on("unhandledRejection", observer);

let promise1 = new Promise<void>(() => {}).then(() => {
  throw new Error("uncaught error")
})

errorManager.off("unhandledRejection", observer);

errorManager.off('freeze')18+

off(type: 'freeze', observer?: FreezeObserver): void

取消之前注册的应用主线程freeze监听。

仅在主线程中使用。使用线程出错时,将抛出错误码,因此建议使用try-catch逻辑进行处理。

如果传入的回调与通过on方法注册回调不一致,将抛出16300004错误码,因此建议使用try-catch逻辑进行处理。

原子化服务API:从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数

参数名 类型 必填 说明
type string 填写'freeze',表示应用主线程freeze观测器。
observer FreezeObserver 由on接口注册的freeze监听的callback。建议使用该参数,如果参数不填会直接清空callback,否则删除指定的callback。

错误码

以下错误码详细介绍请参考通用错误码元能力子系统错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
16300004 If the observer does not exist.

示例

import { errorManager } from '@kit.AbilityKit';

function freezeCallback() {
    console.info("freezecallback");
}
errorManager.on("freeze", freezeCallback);
errorManager.off("freeze", freezeCallback);

errorManager.setDefaultErrorHandler21+

setDefaultErrorHandler(defaultHandler?: ErrorHandler): ErrorHandler

发生JS_CRASH异常时,支持链式回调,返回上一次注册的处理器,仅限主线程调用。

如果传入非法参数或在子线程调用,将抛出错误码并返回undefined,因此建议使用try-catch逻辑进行处理。

若接口参数为空,后续注册的处理器将无法与前序已注册的处理器建立关联,从而中断链式调用。

原子化服务API:从API version 21开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数

参数名 类型 必填 说明
defaultHandler ErrorHandler 新注册的错误处理器,缺省时默认值为空。

返回值

类型 说明
ErrorHandler 返回上一次注册的错误处理器。

错误码

以下错误码详细介绍请参考元能力子系统错误码

错误码ID 错误信息
16000205 The API is not called on the main thread.

示例

import { errorManager } from '@kit.AbilityKit';
import { process } from '@kit.ArkTS';

let oldHandler: errorManager.ErrorHandler;
const errorHandler: errorManager.ErrorHandler = (reason: Error) => {
    // 自定义的errorHandler实现逻辑
    console.info('[Handler]  Uncaught exception handler invoked.');
    if (oldHandler) {
        oldHandler(reason);
    } else {
        // 建议增加判空操作,如果为空采用同步退出方式
        const processManager = new process.ProcessManager();
        processManager.exit(0);
    }
};
oldHandler = errorManager.setDefaultErrorHandler(errorHandler);

errorManager.setDefaultResourceUsageObserver24+

setDefaultResourceUsageObserver(defaultObserver?: ResourceUsageObserver): ResourceUsageObserver

设置资源占用观察者,应用资源超基线时,支持链式回调,返回上一次注册的资源占用观察者,仅限主线程调用。

如果传入非法参数或在子线程调用,将抛出错误码并返回undefined,因此建议使用try-catch逻辑进行处理。

若接口参数为空,后续注册的观察者将无法与前序已注册的观察者建立关联,从而中断链式调用。

模型约束:此接口仅可在Stage模型下使用。

原子化服务API:从API version 24开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数

参数名 类型 必填 说明
defaultObserver ResourceUsageObserver 新注册的资源观察者,默认值为空。

返回值

类型 说明
ResourceUsageObserver 返回上一次注册的资源观察者。

错误码

以下错误码详细介绍请参考元能力子系统错误码

错误码ID 错误信息
16000205 The API is not called on the main thread.

示例

import { errorManager } from '@kit.AbilityKit';
import { process } from '@kit.ArkTS';

let oldObserver: errorManager.ResourceUsageObserver;
const resourceUsageObserver: errorManager.ResourceUsageObserver = (resourceType, resourceSize, detailInfo) => {
  // 自定义的resourceUsageObserver实现逻辑
  console.info('[Observer] Resource usage observer.');
  if (oldObserver) {
    oldObserver(resourceType, resourceSize, detailInfo);
  } else {
    // 建议增加判空操作,如果为空采用同步退出方式
    const processManager = new process.ProcessManager();
    processManager.exit(0);
  }
};
oldObserver = errorManager.setDefaultResourceUsageObserver(resourceUsageObserver);

errorManager.setDefaultFreezeObserver

setDefaultFreezeObserver(defaultObserver?: FreezeObserver) : FreezeObserver

发生APP_FREEZE时,支持链式回调,返回上一次注册的处理器,仅限主线程调用。

如果传入非法参数或在子线程调用,将抛出错误码并返回undefined,因此建议使用try-catch逻辑进行处理。

说明:

该接口请勿与on('freeze')off('freeze')接口混用。

起始版本: 26.0.0

模型约束: 此接口仅可在Stage模型下使用。

原子化服务API:从API版本26.0.0开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数

参数名 类型 必填 说明
defaultObserver FreezeObserver 新注册的错误处理器,默认值为空。
当参数为空时,后续注册的处理器将无法与前序已注册的处理器建立关联,从而中断链式调用。

返回值

类型 说明
FreezeObserver 返回上一次注册的错误处理器。

错误码

以下错误码详细介绍请参考元能力子系统错误码

错误码ID 错误信息
16000205 The API is not called on the main thread.

示例

import { errorManager } from '@kit.AbilityKit';

// 用于保存上一次注册的处理器。如果是第一次注册,无前置处理器。
let oldHandler: errorManager.FreezeObserver = () => {};
const freezeHandler: errorManager.FreezeObserver = () => {
    // 自定义的FreezeHandler实现逻辑
    console.info('[freezeHandler] freeze handler invoked.');
    if (oldHandler) {
        oldHandler();
    } else {
        console.info('[freezeHandler] freeze handler end.');
    }
};

export function setFreezeHandler() {
    try {
        oldHandler = errorManager.setDefaultFreezeObserver(freezeHandler);
    } catch (paramError) {
        let code = (paramError as BusinessError).code;
        let message = (paramError as BusinessError).message;
        console.error('setFreezeHandler',`error: ${code}, ${message}`);
    }
    console.info('Registered freeze Handler.');
}

ErrorObserver

type ErrorObserver = _ErrorObserver.default

ErrorObserver模块。

原子化服务API:从API version 11开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

类型 说明
ErrorObserver ErrorObserver模块。

LoopObserver12+

type LoopObserver = _LoopObserver

LoopObserver模块。定义异常监听,可作为 errormanager.on 函数的参数,监听并处理当前应用主线程超时的事件。

原子化服务API:从API version 12开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

类型 说明
LoopObserver LoopObserver模块。

UnhandledRejectionObserver12+

type UnhandledRejectionObserver = (reason: Error | any, promise: Promise<any>) => void

定义异常监听,用于捕获Promise异步操作失败的原因。

原子化服务API:从API version 12开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数

参数名 类型 必填 说明
reason Error | any 通常是Error类型,表示被拒绝的理由。
promise Promise<any> 被拒绝的promise。

FreezeObserver18+

type FreezeObserver = () => void

定义应用主线程freeze回调,用于应用自定义添加freeze信息。

原子化服务API:从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

GlobalObserver18+

type GlobalObserver = (reason: GlobalError) => void

定义异常监听,可以作为errorManager.on('globalErrorOccurred')errorManager.on('globalUnhandledRejectionDetected')的入参监听当前应用主线程事件处理事件。

原子化服务API:从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数

参数名 类型 必填 说明
reason GlobalError 有关异常事件名字、消息、错误堆栈信息、异常线程名称和类型的对象。

GlobalError18+

有关异常事件名字、消息、错误堆栈信息、异常线程名称和类型的对象。

原子化服务API:从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

名称 类型 只读 可选 说明
instanceName string 表示虚拟机实例名称。
说明
TaskPool线程中异常的instanceName标识规则:
- globalErrorOccurred:标识为“TaskPool Thread + 方法名”;
- globalUnhandledRejectionDetected:标识为“TaskPool Thread + 任务名”;
- 若仅标识为“TaskPool Thread”,则表明异常源于异步回调内部。
instanceType InstanceType 表示虚拟机的实例类型。

InstanceType18+

虚拟机的实例类型。

原子化服务API:从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore

名称 说明
MAIN 0 表示主虚拟机实例。
WORKER 1 表示工作虚拟机实例。
TASKPOOL 2 表示任务池虚拟机实例。
CUSTOM 3 表示用户通过napi_create_ark_runtime从本机代码创建的虚拟机实例。

ErrorHandler21+

type ErrorHandler = (errObject: Error) => void

原子化服务API:从API version 21开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数

参数名 类型 必填 说明
errObject Error 有关异常事件名字、消息、错误堆栈信息的对象。

ResourceUsageObserver24+

type ResourceUsageObserver = (resourceType: ResourceType, resourceSize: number, detailInfo?: Record<string, number>) => void

定义应用资源使用情况的观察者回调函数,作为errorManager.setDefaultResourceUsageObserver的入参,用于监听各类资源占用变化,并支持应用执行自定义资源处理逻辑。

模型约束:此接口仅可在Stage模型下使用。

原子化服务API:从API version 24开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数

参数名 类型 必填 说明
resourceType ResourceType 表示应用资源超基线的类型。
resourceSize number 表示应用资源超基线的资源使用量。
detailInfo Record<string, number> 表示应用资源超基线资源使用量的细分项字典。
说明:仅在resourceType为PSS_MEMORY时存在,为其他类型或缺省时为空;
key为小写内存类型,value为对应细分项资源大小;
细分项的key包含arkts、native、ion、gpu、ashmem和other。

ResourceType24+

应用资源超基线的类型。

模型约束:此接口仅可在Stage模型下使用。

原子化服务API:从API version 24开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore

名称 说明
PSS_MEMORY 1 表示应用当前超基线的资源是PSS的内存。
ION_MEMORY 2 表示应用当前超基线的资源是ION的内存。
ASHMEM_MEMORY 3 表示应用当前超基线的资源是ASHMEM的内存。
GPU_MEMORY 4 表示应用当前超基线的资源是GPU的内存。
FD 5 表示应用当前超基线的资源是FD的数量。
THREAD 6 表示应用当前超基线的资源是THREAD的数量。