我正在创建自己的异常处理程序包装器,我只使用了一个console.log来测试它是否有效。但是,调用一个不存在的函数以便我可以触发错误,打印console.log三次。
然而,将错误触发器移动到ngOnInit console.log两次。哪个我觉得很奇怪?
注意:throw Error('hello')
执行相同的操作
exception.handler.ts
import { ErrorHandler, Injectable, Injector } from '@angular/core'
import { ExceptionLoggingService } from './exception-logging.service'
@Injectable()
export class ExceptionHandler implements ErrorHandler {
constructor (private injector: Injector) { }
handleError (error) {
// const loggingService = this.injector.get(ExceptionLoggingService)
// const message = error.message ? error.message : error.toString()
console.log('hello')
throw error
}
}
使用Angular v5.0.3
答案 0 :(得分:1)
以下是Angular documentation关于ErrorHandler的说法:
ErrorHandler的默认实现将错误消息打印到 控制台。
所以我想如果您删除throw error
并只记录您的消息,它应该只在控制台中打印一次:
handleError (error) {
console.log('hello');
//throw error;
}