Umi全局异常记录(4.0)

配置:

export const requestConfig: RequestConfig = {
  // 错误处理: umi@3 的错误处理方案。
  errorConfig: {
    // 错误抛出
    // 当后端返回字段success=false时触发这个方法并抛出一个自定义的业务异常(BizError);
    errorThrower: (res) => {
      const {success, data, status, message} =
        res as unknown as ResponseStructure;
      if (!success) {
        const error: any = new Error(message);
        error.name = 'BizError';
        error.info = {status, message, data};
        throw error; // 抛出自定义错误
      }
    },
    // 错误接收及处理
    errorHandler: (error: any, opts: any) => {
      if (opts?.skipErrorHandler) throw error;
      dealError(error);
    },
  },

  // 请求拦截器,拦截请求配置,进行个性化处理。
  requestInterceptors: [
    (config: RequestOptions) => {
      // 请求头增加token
      const tokenHeader = {
        'toro-group': localStorage.getItem("toro_group_token"),
      }
      return {...config, headers: tokenHeader};
    },
  ],

  // 响应拦截器
  responseInterceptors: [
    (response) => {
      /**
       * response结构
       * {
       *     data: any, // 后端返回的数据
       *     status: number, // http返回的状态码
       *     。。。。。
       * }
       */
        // 响应data域增加success字段
        // @ts-ignore
        // 拦截响应数据,进行个性化处理
      const {data} = response as unknown as ResponseStructure;
      // 兼容后端返回的状态status:(如果没有返回success字段,增加返回字段success),success为false则触发errorThrower
      data.success = (data.status === 200 || data.status === 'ok');
      return response;
    },
  ],
};

缺陷记录

1、描述:配置了全局异常,但是页面不仅走了全局异常处理,还在页面上打印了一个Unhandled Rejection
解决:由于ModalForm 组件设置了submitTimeout 属性(提交数据时,禁用取消按钮的超时时间(毫秒))当程序异常后,这个方法没有处理异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值