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é | Type | Défaut | Description |
|---|---|---|---|
new HttpError(message, status?, code?) | |||
| message | string | requis | Message d’erreur |
| status | number | 400 | Code HTTP à retourner |
| code | string | undefined | — | Code métier optionnel pour le client |
HttpError (étend Error) | |||
| message | string | requis | Message d’erreur |
| status | number | 400 | Code HTTP (400, 404, 409, etc.) |
| code | string | undefined | — | Code erreur métier optionnel |