首页 > 解决方案 > 角度的自定义错误处理程序不起作用

问题描述

我正在尝试为我的角度应用程序实现自定义错误处理程序,但我被卡住了。它有效,但仅适用于一些非常奇怪的条件。

这是带有实现的stackblitz: https ://stackblitz.com/edit/angular-mqvzba

在这里,在项目中,我们在“app”文件夹中有一个 global-error-handler.service.ts,还有一个带有其他组件文件的 hello.component.ts 文件。

我已经在 app.module.ts 的提供者部分添加了处理指令。奇怪的是,如果我在抛出之前测试新创建的错误,它确实是一个自定义错误的实例。

我期望得到的是未注释 setTimeout 但不使用它时的结果。

要查看的文件: - src/app/global-error-handler.service.ts - src/app/app.module.ts - src/app/hello.component.ts

标签: angulartypescripterror-handling

解决方案


确保您的 CustomError 类扩展了内置的 Error 类。此外,您需要为 instanceof 设置对象原型,以便在扩展内置函数时正常工作。参考:TypeScript 中的自定义错误类

export class CustomError extends Error {    
    button?: any
    errObject: any    
    constructor() {        
        super('custom');
        Object.setPrototypeOf(this, CustomError.prototype);
    }
}

应该给你

Error received:  error on do the thing
global-error-handler.service.ts:42 My error! Yay!

希望这可以帮助!


推荐阅读