Skip to main content
La gestion des erreurs des clients est simple et directe. Nous utilisons une seule classe d’erreur qui conserve toutes les informations nécessaires pour le debugging.

Structure de l’Erreur

/**
 * Erreur pour les clients d'API.
 * Conserve le message original de l'API, le statusCode et l'erreur originale.
 */
export class ClientError extends Error {
  constructor(
    message: string,
    public readonly statusCode?: number,
    public readonly originalError?: unknown
  ) {
    super(message);
    this.name = "ClientError";
  }
}

Implémentation

export class HubriseClient {
  async createOrder(order: Order): Promise<Order> {
    try {
      const response = await fetch(`${this.baseUrl}/orders`, {
        method: "POST",
        headers: this.headers,
        body: JSON.stringify(order),
      });

      if (!response.ok) {
        throw new ClientError(await response.text(), response.status, response);
      }

      return await response.json();
    } catch (error) {
      throw new ClientError(
        error instanceof Error ? error.message : "Erreur inconnue",
        undefined,
        error
      );
    }
  }
}

Caractéristiques

1

Simplicité

• Une seule classe d’erreur• Pas de codes d’erreur complexes• Message d’erreur original de l’API
2

Debugging

• StatusCode HTTP conservé• Erreur originale disponible• Message clair et direct
3

Tracing

• Facile à tracer dans Sentry• Contexte complet conservé• Origine de l’erreur claire

Exemple d’Utilisation

try {
  const order = await hubriseClient.createOrder(newOrder);
} catch (error) {
  if (error instanceof ClientError) {
    // On peut accéder à :
    // error.message - Le message d'erreur
    // error.statusCode - Le code HTTP
    // error.originalError - L'erreur originale
  }
  throw error;
}