HttpError

Documentation de cbk-toolkit

HttpError

Erreur HTTP structurée côté serveur. Permet de lancer des erreurs avec un code HTTP et un code métier optionnel depuis les use-cases, et de les rattraper de manière unifiée dans les couches supérieures (controllers, error handlers).

Utilisation de base — Lancer une erreur HTTP

Un use-case lance une HttpError avec un message et un code HTTP quand une condition métier n’est pas respectée.

import { HttpError } from "@ramses1er/cbk-toolkit/server";

async function createUser(payload: CreateUserPayload) {
  const existing = await userRepo.findByEmail(payload.email);

  if (existing) {
    throw new HttpError("Cet email est déjà utilisé", 409);
  }

  return userRepo.create(payload);
}
Avec code métier

Le troisième paramètre code permet d’ajouter un identifiant métier pour que le client puisse discriminer l’erreur dans le code (plutôt que de parser le message).

import { HttpError } from "@ramses1er/cbk-toolkit/server";

async function deleteUser(id: string) {
  const user = await userRepo.findById(id);

  if (!user) {
    throw new HttpError("Utilisateur introuvable", 404, "USER_NOT_FOUND");
  }

  if (user.role === "admin") {
    throw new HttpError(
      "Impossible de supprimer un administrateur",
      403,
      "ADMIN_DELETION_FORBIDDEN"
    );
  }

  return userRepo.delete(id);
}
Catch dans un controller

Le controller attrape la HttpError et renvoie une réponse JSON structurée au client.

import { HttpError } from "@ramses1er/cbk-toolkit/server";

export async function deleteUserHandler(req: Request) {
  try {
    const { id } = await req.json();
    await deleteUser(id);
    return Response.json({ success: true });
  } catch (error) {
    if (error instanceof HttpError) {
      return Response.json(
        {
          message: error.message,
          code: error.code,
        },
        { status: error.status }
      );
    }

    return Response.json(
      { message: "Erreur interne" },
      { status: 500 }
    );
  }
}
Propriétés d’HttpError :
  • message — message d’erreur (hérité de Error)
  • status — code HTTP (400, 404, 409, 403, 500...)
  • code — code métier optionnel (ex: USER_NOT_FOUND)
API de référence
PropriétéTypeDéfautDescription
new HttpError(message, status?, code?)
messagestringrequisMessage d’erreur
statusnumber400Code HTTP à retourner
codestring | undefinedCode métier optionnel pour le client
HttpError (étend Error)
messagestringrequisMessage d’erreur
statusnumber400Code HTTP (400, 404, 409, etc.)
codestring | undefinedCode erreur métier optionnel