- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在我的 Angular 2 应用程序中,我有一个 resolve guard,它尝试 xhr 并在失败时抛出自定义错误:
return this.service.getProduct (id)
.catch (err => Observable.throw(new MyError(err.message, route, 500, err)));
MyError
只是 Error
的扩展:
export class MyError extends Error {
constructor(message, routeSnapshot, code, err) {
super(message);
this.name = 'MyError';
this.routeSnapshot = routeSnapshot;
this.code = code;
this.err = err;
}
}
我的全局错误处理程序接收到 ZoneAwareError
实例而不是 MyError
:
export class MyErrorHandler implements ErrorHandler {
handleError(error) {
console.log('handling err', error);
// this prints a ZoneAwareError on the console
}
}
error
真的应该包含在 ZoneAwareError
中吗?我如何打开它以返回 MyError
?依赖 error.rejection
属性是否安全? (因为我可以在那里看到 MyError
)。
=== 编辑:
好的,我刚刚发现 Angular 将错误包装在 Error
的不同子类型中,而不仅仅是 ZoneAwareError
。到目前为止,我有这个功能来解开它们,但感觉有点老套:
function unwrap (err) {
let res = err.rejection ? err.rejection : err;
while (res.originalError) {
res = res.originalError;
}
res.name = res.name || 'unknown';
return res;
}
最佳答案
您可以看到 Angular 本身是如何展开的: angular/modules/@angular/core/src/error_handler.ts ,但是他们似乎没有以任何方式处理rejection
(这非常有用)所以我在展开之前使用以下内容:
if(error.hasOwnProperty('rejection'))
{
error = error.rejection;
}
UncaughtPromiseError zone.js 中的界面。
关于angular - 如何 "unwrap"ZoneAwareError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42027956/
当我尝试运行看起来像这样的 Angular4 时,我突然看到一个错误... ERROR ZoneAwareError {__zone_symbol__error: Error: Uncaught (i
在我的 Angular 2 应用程序中,我有一个 resolve guard,它尝试 xhr 并在失败时抛出自定义错误: return this.service.getProduct (id)
我是 TypeScript/JavaScript 和 Angular2 的新手。我正在尝试为可以作为 VSTS 构建管道的一部分运行的 Angular2 应用程序设置单元测试框架。这个想法是在 pha
您好,感谢您的帮助!我正在进行英雄的 Angular 教程之旅,我已经结束了这一点4.Multiples Components ,但内容未加载(我们看到“正在此处加载 AppComponent 内容.
做了 npm install angular2-onsenui@latest --save npm install onsenui@2.2.x --save npm install process@0
当我使用 npm 版本 4.6.1 运行我的 angular 2 应用程序时,出现以下错误。我的 ng build 和 gulp 在项目上运行良好。任何评论/帮助表示赞赏。谢谢。 @angular/c
我已经多次检查我的代码并尝试在网络和 stackoverflow 上找到类似的问题,但我现在已经没有想法了,我根本看不出我的错误。您对我接下来应该检查的内容有什么建议吗? 更新:当我调试我的配置类时,
我是一名优秀的程序员,十分优秀!