用户登录后,我将检索他们的userAccount
。在未返回的情况下,我在服务中抛出错误。然后,我继续在component.ts
控制器中捕获错误。
由于某些原因,component.ts
无法捕获所引发的错误。在控制台中,我可以看到错误,但是由于某种原因,我的component.ts
未能在try/catch
块中捕获它。
我已经对其进行了多次测试,以查看失败的原因,并且错误消息似乎没有到达catch语句。
这是我的服务:
/* On error: */
error => {
if (error.status === 401) {
Helpers.logGroupedErrorObjectsToDevConsole(
'Login Service: getCustomerAccount()',
[
{
title: 'Session Timed Out:',
info: true
}
]
);
} else {
Helpers.logGroupedErrorObjectsToDevConsole(
'Login Service: getCustomerAccount()',
[
{
title: 'Cannot get customer account:',
info: true
}
]
);
}
throw new Error(error);
}
这是在我的component.ts
try {
setTimeout(() => {
this._service.customer(this.url, this.route)
}, 1000);
} catch (e) {
this.showUnknownLoginFailureMessage = true;
}
我期望的是要在component.ts中处理错误
有可能吗? 我是在正确处理错误还是在丢失某些东西?
我需要一些指导。
谢谢!
答案 0 :(得分:1)
中有一个解决方案try / catch不会在传递给订阅的回调中捕获任何内容(或 然后,或者 setTimeout 或任何在其他版本上运行的东西) “打勾”或“微任务”。您必须在任务中发现错误 发生了。
答案 1 :(得分:1)
您可以通过在try... catch
回调中移动setTimeout
语句来处理异常:
setTimeout(() => {
try {
this._service.customer(this.url, this.route);
} catch (e) {
this.showUnknownLoginFailureMessage = true;
}
}, 1000);
有关演示,请参见this stackblitz。