如何在组件中抛出错误并在 ErrorHandler 中处理它?

How do I throw an error in a component and handle it in ErrorHandler?

有我的拦截器class,它应该检查错误状态是否为 401,如果是,它会从服务调用 signOut() 方法,如果不是,什么都不做:

@Injectable()
export class MyErrorHandler implements ErrorHandler {
  constructor(
    private UserService: UserService,
  ) {
  }
  
  handleError(error) {
    if (error?.status === 401) {
      this.UserService.signOut();
    }
  }
}

有我的组件:

@Component({
  ...
})
export class CartTableComponent implements OnInit {
  ...
  updateQuantity(i: number): void {
    this.CartService.update(i).subscribe(data => {
     ...
    })
  }
}

所以它有效。 ErrorHandler 处理它。

然后我需要组件在收到错误时做一些事情,所以我在那里添加错误状态:

@Component({
  ...
})
export class CartTableComponent implements OnInit {
  ...
  updateQuantity(i: number): void {
    this.CartService.update(i).subscribe(data => {
     ...
    }, error => {
       console.log('Some text should be shown when the method receives the error');
       throw new Error(error);
    })
  }
}

在我添加错误后,ErrorHandler 不处理错误。 handleError() 方法接收 [Object object] 而不是 object of error 并且它无法读取 error?.status.

如何在组件中抛出错误并在 ErrorHandler 中处理它?

你试过直接抛错吗? throw error 而不是 throw new Error(error);?

此外,如果你想检查请求,我认为最好使用 HTTP_INTERCEPTOR 这种方法你的拦截器将是第一个收到错误的元素,并且可以处理(或传递)给相应的组件。