1
我已經得到了最簡單的Angular(v2.4.3)自定義錯誤處理程序的實現,但仍然無法記錄錯誤。什麼可能是錯誤的?角2錯誤永遠不會去自定義錯誤處理程序
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
}
}
樣品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
感謝。不幸的是它仍然不起作用。 –
我認爲這是因爲你已經使用'.catch'方法指定了另一個處理程序。刪除它,你應該能夠看到你的自定義錯誤處理程序被調用 – coderek
是的,就是這樣。謝謝!你可以將它作爲答案發布,以便將其標記爲解決方案嗎? –