HarmonyOS 鸿蒙Next:arkts是否有类似ts的捕获Promise中未处理的异常api,类似unhandledrejection
HarmonyOS 鸿蒙Next:arkts是否有类似ts的捕获Promise中未处理的异常api,类似unhandledrejection
window.addEventListener(‘unhandledrejection’, function(event) {
// 这个事件对象有两个特殊的属性:
alert(event.promise); // [object Promise] —— 生成该全局 error 的 promise
alert(event.reason); // Error: Whoops! —— 未处理的 error 对象
});
更多关于HarmonyOS 鸿蒙Next:arkts是否有类似ts的捕获Promise中未处理的异常api,类似unhandledrejection的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
5.0canary2版本已实现捕获promise异常:
import errorManager from '[@ohos](/user/ohos).app.ability.errorManager';
import { BusinessError } from '[@ohos](/user/ohos).base';
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Page422 {
[@State](/user/State) message: string = 'Hello World';
aboutToAppear(): void {
console.log("aaaaa-1")
let promise1 = new Promise<boolean>((resolve, reject) => {
resolve(true)
reject(new Error('[uncaught error]Let it reject!!!'));
}).then(() => {
console.log("aaaaa-3")
})
let observer: errorManager.UnhandledRejectionObserver = (reason: Error, promise: Promise<void>) => {
console.log("aaaaa-4")
if (promise === promise1) {
console.log("promise1 is rejected");
}
console.log("reason.name: ", reason.name);
console.log("reason.message: ", reason.message);
if (reason.stack) {
console.log("reason.stack: ", reason.stack);
}
};
try {
errorManager.on('error', observer);
errorManager.on('unhandledRejection', observer);
} catch (paramError) {
let code = (paramError as BusinessError).code;
let message = (paramError as BusinessError).message;
console.error(`error: ${code}, ${message}`);
}
}
build() {
RelativeContainer() {
Text(this.message)
.id('HelloWorld')
.fontSize(50)
.fontWeight(FontWeight.Bold)
.alignRules({
center: { anchor: '__container__', align: VerticalAlign.Center },
middle: { anchor: '__container__', align: HorizontalAlign.Center }
})
.onClick(() => {
let a = new Promise<boolean>((_, reject) => {
reject(new Error('[uncaught error]Let it reject!!!'));
})
a
})
}.height('100%').width('100%')
}
}
更多关于HarmonyOS 鸿蒙Next:arkts是否有类似ts的捕获Promise中未处理的异常api,类似unhandledrejection的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next的arkts(ArkUI TypeScript)框架中,确实提供了类似JavaScript中unhandledrejection
的机制来处理Promise中未处理的异常。虽然arkts与TypeScript在语法和特性上高度兼容,但针对Promise未处理异常的处理,arkts并没有直接沿用JavaScript的事件名称,而是采用了其特有的方法。
在arkts中,你可以通过全局的window
对象(或在ArkUI的上下文中,可能是其他全局对象)监听Promise的未处理异常。具体方法通常涉及到一个特定的事件名或方法,用于注册一个回调函数,该函数会在Promise被拒绝且没有被捕获时调用。
例如,可能会有一个类似下面的API(注意,以下代码仅为示意,实际API可能有所不同):
window.addEventListener('unhandledPromiseRejection', (event: PromiseRejectionEvent) => {
console.error('Unhandled Promise Rejection:', event.reason);
});
但请注意,上述代码是基于通用假设,实际使用时,请参考arkts的官方文档或API参考手册来确认正确的事件名称和用法。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html