import {NgModule, ErrorHandler} from '@angular/core';
class MyErrorHandler implements ErrorHandler {
handleError(error:any) {
// do something with the exception
console.log('Error',error);
}
}
我正在使用ErrorHandler来捕获生成的异常。
捕获的错误类型为ERROR,但类错误的类型为error:any
,因为console.log('错误',错误);打印Error Uncaught (in promise): [object Object]
,因为错误对象的类型是any。
如何在handleError(error:any)
?
答案 0 :(得分:0)
Typescript不会在运行时进行类型检查。由于Error
IS any
(any
仅表示任何对象'),使用handleError(error: any)
对象调用Error
完全有效
有点像"选择退出"在翻译成javascript时的类型检查。
所以当你说:"打印错误未捕获(在承诺中):[object Object]作为错误对象的类型是任何。",很可能是" any"输入IS实际上是一个错误。当您将对象打印到控制台时,它总是看起来像[object Object]
(除非您的控制台有一些很好的解析,如Chrome的控制台,它会显示一个交互式对象)。如果你想要json:做error.toJSON()
,你就会看到错误对象中的所有字段,并能够判断它是否真的是Error
。
我怀疑你想要做的事情是:
console.log('Error', error.message);
我不知道错误的哪些字段在我的头顶。如果您不这样做,则可以使用as
命令在您编写代码时简化操作:
handleError(e: any) {
// do something with the exception
const error as Error;
console.log('Error', error.message);
}
当然,如果有人在非Error对象(或者没有message
的对象上使用它,那么它会破坏,所以它可能最好进行检查:
handleError(e: any) {
// do something with the exception
const error as Error;
if (error.message) {
console.log('Error', error.message);
} else {
console.log('Unspecified error!');
}
}