W moim Kątowymi 2 app Mam straży resolve która stara się XHR i generuje błąd niestandardowy, jeśli nie:Jak "rozwinąć" ZoneAwareError?
return this.service.getProduct (id)
.catch (err => Observable.throw(new MyError(err.message, route, 500, err)));
MyError
jest po prostu przedłużeniem 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;
}
}
Moja globalny błąd Wózek odbiera wystąpienie ZoneAwareError
zamiast MyError
:
export class MyErrorHandler implements ErrorHandler {
handleError(error) {
console.log('handling err', error);
// this prints a ZoneAwareError on the console
}
}
Czy error
naprawdę ma być opakowany w ZoneAwareError
? Jak mogę go odpakować, aby odzyskać MyError
? Czy można bezpiecznie polegać na właściwości error.rejection
? (Ponieważ widzę tam MyError
).
=== Edit:
Ok, właśnie odkrył, że kątowa owija błędów w różnych podtypów Error
, nie tylko ZoneAwareError
. Do tej pory mam tej funkcji, aby je rozpakować, ale czuje się trochę hacky:
function unwrap (err) {
let res = err.rejection ? err.rejection : err;
while (res.originalError) {
res = res.originalError;
}
res.name = res.name || 'unknown';
return res;
}