自定义错误处理程序打印控制台日志两次/三次

时间:2017-12-09 09:29:26

标签: angular

我正在创建自己的异常处理程序包装器,我只使用了一个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

1 个答案:

答案 0 :(得分:1)

以下是Angular documentation关于ErrorHandler的说法:

  

ErrorHandler的默认实现将错误消息打印到   控制台。

所以我想如果您删除throw error并只记录您的消息,它应该只在控制台中打印一次:

handleError (error) {
  console.log('hello');
  //throw error;
}