Exceptions de bibliothèque client

Les exceptions de bibliothèque client se composent d'une ou de plusieurs instances de l'objet ClientError.

Gestion des exceptions de bibliothèque client

Lorsque la bibliothèque client lance une exception, l'exception contient une ou plusieurs instances de l'objet ClientError. L'exception de composant est toujours une extension de AbstractBusinessObjectDocumentException et contient une liste de ces objets d'erreur client, chaque erreur représentant une instruction d'entrée non valide.

L'exemple de code suivant illustre comment récupérer le message localisé, la clé de message d'erreur et le code d'erreur des erreurs de client à partir d'une exception de bibliothèque client (la variable e de la première ligne) :


List listErrors = e.getClientErrors();
  if (listErrors != null) {
   for (int i=0; i < listErrors.size(); i++) {
    ClientError clientError = (ClientError) listErrors.get(i);
    System.out.println("Message: " +
clientError.getLocalizedMessage(Locale.ENGLISH));
    System.out.println("Error key: " + clientError.getErrorKey());
    System.out.println("Error code: " +
clientError.getErrorCode());
   }
  }

Déclenchement d'exceptions de bibliothèque client

La bibliothèque client crée des objets SDO (Service Data Objects) en fonction des paramètres d'entrée. Étant donné que les objets SDO sont des objets Java, une validation est nécessaire du côté du client pour assurer une saisie appropriée. Cette gestion des exceptions ne peut pas être évitée sur le client, en particulier pour les méthodes basées sur la mappe pour traiter les requêtes Web. Lorsque le client prépare le message de requête, il doit renvoyer son exception pour représenter l'erreur de paramètre. Du côté du client, vous devez vérifier les paramètres manquants qui sont nécessaires pour créer le SDO, avant l'appel à un service.

Pour créer une erreur de client, vous devez transmettre les éléments suivants :

  • Type d'erreur
  • Clé de message
  • Paramètres utilisés pour formater le message approprié
  • Nom de base du regroupement de ressources

Le type d'erreur indique le type d'erreur, et la clé de message identifie le problème de façon unique. Les autres paramètres sont les paramètres à transmettre au message et le dernier est le nom du regroupement de ressources. Comme le montre l'exemple de codage ci-dessous, voici comment instancier un objet. Notez le deuxième paramètre messageKey. Il identifie clairement que le problème est que l'ID de commande a une valeur non valide. Donc, si le client veut modifier ce message, il n'a pas besoin de faire beaucoup de vérification supplémentaire.

La bibliothèque client fournit un message par défaut pour chaque erreur qui peut se produire. Chaque module de service utilise le fichier de propriétés associé à son enregistreur pour contenir les messages adaptés au client. Ce fichier de propriétés se trouve dans le projet MyServiceModule-Client dans le package com.ibm.commerce. component.facade.logging.properties.


ClientError clientError = new
ClientError(ClientError.TYPE_INVALID_PARAMETER_VALUE,
"INVALID_PARAMETER_VALUE_ORDER_ID", new Object[] { "orderId", "abc"
}, LOGGER.getResourceBundleName());
exception = new OrderException(null);
exception.addClientError(clientError);
//add more client errors if necessary
throw exception;

Deux types d'exceptions peuvent être déclenchées :

Exceptions d'application
Une exception d'application est une exception de composant saisi utilisée pour signaler les événements métier, tels que les paramètres non valides. Le composant déclare explicitement les exceptions d'application qu'il peut déclencher. Cette exception d'application étend une classe d'exception d'application abstraite pour correspondre à une structure qui correspond aux informations d'exception à inclure avec les réponses BOD. Lors de l'instanciation, le message correspondant est enregistré sous forme de message INFO.
Exceptions système
Une exception système est une exception non contrôlée que le client n'a pas besoin de détecter de façon explicite. Ces exceptions système indiquent une défaillance sous-jacente (défaut de code, problèmes de connexion, défaut irrécupérable) que l'infrastructure, et non le composant, gérerait. Si des composants souhaitent renvoyer des exceptions système, ils doivent étendre la nouvelle classe d'exception système abstraite pour journalisation commune et autre qualité de service. Lors de l'instanciation, le message correspondant est enregistré sous forme de message SEVERE, mais une réponse d'erreur système générique est signalée à l'utilisateur.