Skip to content

keq-exception

用于抛出/捕获异常的 Middleware。并且可控制抛出的异常是否触发 retry

使用方法

typescript
import { request } from "keq"
import {
  throwException,
  catchException,
  RequestException,
} from "keq-exception"

request
  .use(
    catchException((err) => {
      if (err instanceof RequestException && err.code === 401) {
        context.redirect("/login")
        return
      }

      throw err
    })
  )

  // throwException 的回调函数必然在`await next()`后运行
  // 可以在回调函数中尝试获取 Response
  .use(
    throwException(async (ctx) => {
      if (ctx.response && ctx.response.status >= 400) {
        const body = await ctx.response.json()
        throw new RequestException(ctx.response.status, body.message)
      }
    })
  )

RequestException(statusCode[, errorMessage[, retry]])

参数默认值描述
statusCode-错误码
message''错误信息
retrytrue异常是否会触发retry