Saltar al contenido principal

Errores

Todo error que lanza el SDK extiende PlaneError, y todas las clases de abajo se exportan desde la raíz del paquete.

ErrorLo lanzaCuándo
PlaneApiErrorv2la API respondió con un error: un problem detail de RFC 9457
NoMatchFoundErrorv2una búsqueda findBy* no encontró nada
MultipleMatchesFoundErrorv2una búsqueda findBy* encontró más de una fila
PlaneNetworkErrorv2la petición nunca llegó a un servidor: conexión rechazada, fallo de DNS, timeout…
MissingPathIdErrorv2no se puede construir una URL porque falta un id de ruta
HttpErrorv1falló una petición v1: el código de estado, el cuerpo de la respuesta y sus cabeceras
AttachmentTooLargeErrorv1workItems.attachments.download superó su maxBytes

Los siete extienden PlaneError directamente. En particular, los errores de búsqueda no son subclases de PlaneApiError, así que capturar solo esa clase no los captura.

PlaneApiError​

PlaneApiError lleva el problem detail como .status, .type, .code, .detail y .errors, este último siendo los errores de validación por campo cuando el servidor los envió.

import { PlaneApiError, PlaneNetworkError } from "@hoyasumii/plane";

try {
await client.v2.workspaces.projects.states.create("acme", "ENG", { name: "", color: "#000000" });
} catch (error) {
if (error instanceof PlaneApiError) {
console.log(error.status, error.code, error.detail, error.errors);
} else if (error instanceof PlaneNetworkError) {
console.log("unreachable:", error.message, error.cause);
} else {
throw error;
}
}

Una escritura en lote responde HTTP 200 incluso cuando fallan filas. v2.raiseForFailures(result) convierte un fallo en un PlaneApiError (consulta Membresías y escrituras en lote).