跳到主要内容

异常类型

Keq 提供了一套内置的异常类型,用于处理不同场景下的请求错误。这些异常类继承自标准的 JavaScript 错误类,提供了更精确的错误分类和处理能力。

RequestException​

请求异常的基类,用于表示 HTTP 请求过程中发生的错误。

class RequestException extends Error {
  constructor(
    statusCode: number,
    message?: string,
    options?: { fatal?: boolean, response?: Response } = {},
  )
}

参数说明:

参数类型默认值描述
statusCodenumber-HTTP 状态码
messagestring-错误消息
options.fatalbooleanfalse设置为 true 可以终止重试机制
options.responseResponse-关联的 Response 对象(如果有的话)

AbortException​

继承自 DOMException,当请求被主动中止时抛出。

class AbortException extends DOMException {
  constructor(message?: string)
}
参数类型默认值描述
messagestring-错误消息

TimeoutException​

继承自 AbortException,当请求超时时抛出。通常由 .timeout() 方法触发。

class TimeoutException extends AbortException {
  constructor(message?: string)
}
参数类型默认值描述
messagestring-错误消息

MutexException​

当请求被 mutex 并发控制拦截时抛出。表示同一队列中已有请求正在执行,新请求被拒绝。

class MutexException extends Exception {
  constructor(message?: string)
}
参数类型默认值描述
messagestring-错误消息

TypeException​

参数类型错误异常,类似于标准的 TypeError,用于标识参数传递错误。

class TypeException extends TypeError {}
信息

在 TypeScript 项目中,通常不会遇到此异常,因为 TypeScript 编译器会在编译时捕获类型错误。此异常主要用于运行时类型检查或纯 JavaScript 项目。

HTTP 状态码异常​

Keq 提供了常见的 HTTP Exception,均继承自 RequestException:

异常类名状态码
BadRequestException400
UnauthorizedException401
ForbiddenException403
NotFoundedException404
MethodNotAllowedException405
NotAcceptableException406
ProxyAuthenticationRequiredException407
RequestTimeoutException408
ConflictException409
PreconditionFailedException412
ContentTooLargeException413
UriTooLongException414
UnsupportedMediaTypeException415
ImATeapotException418
TooManyRequestsException429
InternalServerErrorException500
NotImplementedException501
BadGatewayException502
ServiceUnavailableException503
GatewayTimeoutException504