Aller au contenu principal

Gestion des Erreurs

Nous n'utilisons généralement pas de try/catch dans les contrôleurs. À la place, nous laissons les exceptions remonter jusqu'au Global Exception Handler.

Le Gestionnaire Global (app/Exceptions/Handler.ts)

Cette classe attrape toutes les erreurs non gérées et les formate en une réponse JSON standardisée :

{
"errors": [
{
"message": "Camera not found",
"code": "E_ROW_NOT_FOUND",
"status": 404
}
]
}

Exceptions Personnalisées

BusinessException

Utilisez ceci pour les erreurs logiques (ex: "Impossible de supprimer une caméra en cours d'enregistrement").

import BusinessException from "#exceptions/business_exception";

if (camera.isRecording) {
throw BusinessException.badRequest(
"Impossible de supprimer une caméra active",
);
}

Méthodes statiques disponibles :

  • .badRequest(message) -> 400
  • .notFound(message) -> 404
  • .forbidden(message) -> 403

Erreurs de Validation

Quand la validation VineJS échoue, elle lance automatiquement E_VALIDATION_ERROR (422), qui est attrapée par le handler et formatée en une liste d'erreurs par champ.