Aller au contenu principal

Erreurs

Chaque erreur que le SDK lève étend PlaneError, et chaque classe ci-dessous est exportée depuis la racine du paquet.

ErreurLevée parQuand
PlaneApiErrorv2l'API a répondu une erreur : un détail de problème RFC 9457
NoMatchFoundErrorv2une recherche findBy* n'a rien trouvé
MultipleMatchesFoundErrorv2une recherche findBy* a trouvé plus d'une ligne
PlaneNetworkErrorv2la requête n'a jamais atteint un serveur : connexion refusée, échec DNS, délai dépassé, …
MissingPathIdErrorv2une URL ne peut pas être construite car un id de chemin manque
HttpErrorv1une requête v1 a échoué : le code de statut, le corps de la réponse et les en-têtes de la réponse
AttachmentTooLargeErrorv1workItems.attachments.download a dépassé son maxBytes

Les sept étendent PlaneError directement. En particulier, les erreurs de recherche ne sont pas des sous-classes de PlaneApiError, donc attraper celle-ci seule ne les attrape pas.

PlaneApiError​

PlaneApiError porte le détail du problème comme .status, .type, .code, .detail et .errors, ce dernier étant les erreurs de validation par champ quand le serveur les a envoyées.

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;
}
}

Une écriture en bloc répond HTTP 200 même quand des lignes échouent. v2.raiseForFailures(result) transforme un échec en PlaneApiError (voir Memberships et écritures en bloc).