我有最简单的Angular(v2.4.3)自定义错误处理程序的实现,但仍然无法记录错误。什么可能是错的?
app.module.ts
providers: [
{ provide: ErrorHandler, useClass: MyErrorHandler }
]
我的误差-handler.ts
import { ErrorHandler, Injectable} from '@angular/core';
@Injectable()
export class MyErrorHandler extends ErrorHandler {
constructor(private errorHandlerService: ErrorHandlerService) {
super();
}
public handleError(error: any): void {
console.log('error'); // nothing
}
}
sample-service.ts(试图抛出错误)
addSomething(data) {
let bodyString = JSON.stringify(data);
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.post(this.url + 'expense', bodyString, options)
.map((res: Response) => res.json())
.catch(this.handleError);
}
private handleError(error: any) {
console.log(error.json()); // error: { message: 'Some error' }
return Observable.throw(error.json());
}
投入服务的错误永远不会到达MyErrorHandler。可能有什么不对?
我不知道这是否重要,但在控制台我也有这样的事情:
POST http://path/to/api 422 // logged by zone.js
答案 0 :(得分:5)
更改
com.sun.*
到
export class MyErrorHandler extends ErrorHandler {
请参阅此处https://angular.io/docs/ts/latest/api/core/index/ErrorHandler-class.html
您还应该删除使错误处理短路的export class MyErrorHandler implements ErrorHandler {
方法
.catch