Skip to content

Classes de Erro

Todas as classes de erro HTTP estendem BaseHttpError (que estende Error).

BaseHttpError

Classe base abstrata para todos os erros HTTP.

Propriedades

PropriedadeTipoDescricao
statusliteral (ex: 404)Codigo de status HTTP
statusTextliteral (ex: "Not Found")Texto do status HTTP
headersHeadersCabecalhos da resposta
namestringNome da classe de erro (ex: "NotFoundError")

Metodos

MetodoTipo de RetornoDescricao
json<T = unknown>()Promise<T>Analisa o corpo da resposta como JSON com parametro de tipo opcional
text()Promise<string>Analisa o corpo da resposta como texto
blob()Promise<Blob>Analisa o corpo da resposta como Blob
arrayBuffer()Promise<ArrayBuffer>Analisa o corpo da resposta como ArrayBuffer
clone()Mesma classeClona o erro para multiplas leituras do body

Propriedades Estaticas

Todas as classes de erro tambem possuem status e statusText estaticos:

typescript
import { NotFoundError } from '@pbpeterson/typed-fetch';

NotFoundError.status;     // 404 (literal type)
NotFoundError.statusText; // "Not Found" (literal type)

NetworkError

Representa uma falha em nivel de rede (DNS, conexao recusada, timeout). Diferente dos erros HTTP, NetworkError nao possui status, headers ou corpo de resposta — a requisicao nunca chegou ao servidor.

typescript
import { NetworkError } from '@pbpeterson/typed-fetch';

const error = new NetworkError('Connection refused');
error.name;    // "NetworkError"
error.message; // "Connection refused"

Erros de Cliente (4xx)

ClassStatusStatus Text
BadRequestError400Bad Request
UnauthorizedError401Unauthorized
PaymentRequiredError402Payment Required
ForbiddenError403Forbidden
NotFoundError404Not Found
MethodNotAllowedError405Method Not Allowed
NotAcceptableError406Not Acceptable
ProxyAuthenticationRequiredError407Proxy Authentication Required
RequestTimeoutError408Request Timeout
ConflictError409Conflict
GoneError410Gone
LengthRequiredError411Length Required
PreconditionFailedError412Precondition Failed
RequestTooLongError413Payload Too Large
RequestUriTooLongError414URI Too Long
UnsupportedMediaTypeError415Unsupported Media Type
RequestedRangeNotSatisfiableError416Range Not Satisfiable
ExpectationFailedError417Expectation Failed
ImATeapotError418I'm a teapot
MisdirectedRequestError421Misdirected Request
UnprocessableEntityError422Unprocessable Entity
LockedError423Locked
FailedDependencyError424Failed Dependency
TooEarlyError425Too Early
UpgradeRequiredError426Upgrade Required
PreconditionRequiredError428Precondition Required
TooManyRequestsError429Too Many Requests
RequestHeaderFieldsTooLargeError431Request Header Fields Too Large
UnavailableForLegalReasonsError451Unavailable For Legal Reasons

Erros de Servidor (5xx)

ClassStatusStatus Text
InternalServerError500Internal Server Error
NotImplementedError501Not Implemented
BadGatewayError502Bad Gateway
ServiceUnavailableError503Service Unavailable
GatewayTimeoutError504Gateway Timeout
HttpVersionNotSupportedError505HTTP Version Not Supported
VariantAlsoNegotiatesError506Variant Also Negotiates
InsufficientStorageError507Insufficient Storage
LoopDetectedError508Loop Detected
NotExtendedError510Not Extended
NetworkAuthenticationRequiredError511Network Authentication Required

Trabalhando com Corpos de Erro

typescript
import { typedFetch, BadRequestError, isHttpError } from '@pbpeterson/typed-fetch';

const { error } = await typedFetch('/api/users');

if (error && isHttpError(error)) {
  // Parsing de JSON tipado
  const details = await error.json<{ message: string; code: string }>();

  // Outros formatos (clone primeiro para multiplas leituras)
  const text = await error.clone().text();
  const blob = await error.clone().blob();
  const buffer = await error.clone().arrayBuffer();

  // Metadados da resposta
  console.log(error.status);                         // 400 (literal)
  console.log(error.statusText);                     // "Bad Request" (literal)
  console.log(error.name);                           // "BadRequestError"
  console.log(error.headers.get('content-type'));     // response header
}

Clonando Erros

Clone um erro para ler o body em multiplos formatos:

typescript
if (isHttpError(error)) {
  const cloned = error.clone();

  const json = await error.json();
  const text = await cloned.text();
}

Lançado sob a Licença MIT.