跳到主要内容

异常类型

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