编程语言
首页 > 编程语言> > 怎么判断报错是否是接口报错

怎么判断报错是否是接口报错

作者:互联网

在 Angular 或 JavaScript 中,判断报错是否是接口(HTTP)错误通常根据错误对象的性质和属性来确定。以下是一些检测接口错误的方法:

1. 使用 HttpErrorResponse

如果您在使用 Angular 的 HttpClient,当请求失败时,错误通常会被包装为 HttpErrorResponse 对象。您可以在全局错误处理器或 HTTP 拦截器中检查错误对象的类型。

import { HttpErrorResponse } from '@angular/common/http';

handleError(error: any): void {
  if (error instanceof HttpErrorResponse) {
    // 这是一个 HTTP 错误
    console.error('这是一个 HTTP 错误:', error);
    console.error('错误状态:', error.status);
    console.error('错误信息:', error.message);
  } else {
    // 处理其他类型的错误
    console.error('捕获到的其他错误:', error);
  }
}

TypeScript

2. 检查错误响应的状态码

在接口错误的情况下,通常会有特定的状态码。例如,4xx 表示客户端错误(如 404 未找到、401 未授权),5xx 表示服务器错误(如 500 内部服务器错误)。您可以根据这些状态码来进行判断。

import { HttpErrorResponse } from '@angular/common/http';

handleError(error: any): void {
  if (error instanceof HttpErrorResponse) {
    switch (error.status) {
      case 400:
        console.error('请求错误(400):', error.error);
        break;
      case 401:
        console.error('未经授权(401):', error.error);
        break;
      case 404:
        console.error('未找到(404):', error.error);
        break;
      case 500:
        console.error('服务器错误(500):', error.error);
        break;
      default:
        console.error('其他 HTTP 错误:', error);
    }
  } else {
    console.error('捕获到的其他错误:', error);
  }
}

TypeScript

3. 使用 HTTP 拦截器

您可以创建一个 HTTP 拦截器来捕获请求的错误,这样所有的 API 请求的错误都可以被集中处理。

import { Injectable } from '@angular/core';
import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpErrorResponse } from '@angular/common/http';
import { Observable, throwError } from 'rxjs';
import { catchError } from 'rxjs/operators';

@Injectable()
export class ErrorInterceptor implements HttpInterceptor {
  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return next.handle(req).pipe(
      catchError((error: HttpErrorResponse) => {
        if (error instanceof HttpErrorResponse) {
          // 这里是 HTTP 错误
          console.error('HTTP 错误:', error);
        }
        return throwError(error);
      })
    );
  }
}

TypeScript

4. 检查错误信息中的特定字段

在某些情况下,后端可能会返回特定的 JSON 格式,而您可以根据返回的内容来判断是否为接口错误。确保您的后端 API 在失败时有一致的结构,这样您就可以根据该结构进行判断。

handleError(error: any): void {
  if (error instanceof HttpErrorResponse) {
    if (error.error && error.error.message) {
      console.error('接口返回的错误信息:', error.error.message);
    }
  } else {
    console.error('捕获到的其他类型的错误:', error);
  }
}

标签:
来源: