如何“解包”ZoneAwareError?

时间:2017-02-03 15:44:47

标签: angular zonejs

在我的Angular 2应用程序中,我有一个解决方案,它会尝试xhr并在失败时抛出自定义错误:

install.packages("Matrix")
install.packages("quanteda")

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)。

===编辑:

好的,我刚刚发现Angular在MyError的不同子类型中包含错误,而不仅仅是Error。到目前为止,我有这个功能来打开它们,但感觉有点hacky:

ZoneAwareError

1 个答案:

答案 0 :(得分:4)

你可以看到如何在Angular中完成展开: angular/modules/@angular/core/src/error_handler.ts,但他们似乎无法以任何方式处理geom_area()(这非常有用)所以我之前使用以下内容解缠:

rejection
zone.js中的

UncaughtPromiseError接口。