Excepciones de biblioteca de cliente

Las excepciones de biblioteca de cliente constan de una o más instancias del objeto ClientError.

Manejo de excepciones de biblioteca de cliente

Cuando la biblioteca de cliente genera una excepción, ésta contiene una o más instancias del objeto ClientError . La excepción de componente siempre es una extensión de AbstractBusinessObjectDocumentException y contiene una lista de estos objetos de error de cliente; cada error representa una sentencia de entrada no válida.

El código de ejemplo siguiente ilustra cómo recuperar el mensaje localizado, la clave del mensaje de error y el código de error de los errores de cliente de una excepción de biblioteca de cliente (la variable e en la primera línea):


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());
   }
  }

Generación de excepciones de biblioteca de cliente

La biblioteca de cliente genera objetos de datos de servicio (SDO) basándose en los parámetros de entrada. Puesto que los objetos SDO son objetos Java, se requiere cierta validación en el lado del cliente para asegurar una sintaxis correcta. Este manejo de excepciones no se puede evitar en el cliente, especialmente para que los métodos basados en correlación manejen las peticiones web. Cuando el cliente prepara el mensaje de petición, tiene que devolver su excepción para representar el error de parámetro. En el lado del cliente debe comprobar los parámetros que faltan y que son necesarios para crear el SDO, antes de llamar a un servicio.

Para crear un error de cliente, debe pasar:

  • el tipo de error
  • clave de mensaje
  • los parámetros utilizados para dar formato al mensaje adecuado
  • el nombre del paquete de recursos.

El tipo de error indica de qué tipo es el error, y la clave de mensaje será algo que identifique de forma exclusiva el problema. Los otros parámetros son los que se han de pasar al mensaje y lo último es el nombre del paquete de recursos. Tal como se muestra en el siguiente ejemplo de código, así es como se crea una instancia de un objeto. Observe el segundo parámetro messageKey. Identifica claramente que el problema es el Id de pedido que tiene un valor no válido. Por lo que si el cliente quiere cambiar este mensaje, no es necesario que realicen gran número de comprobaciones adicionales.

La biblioteca de cliente proporciona un mensaje predeterminado para cada error que puede ocurrir. Cada módulo de servicio utiliza el archivo de propiedades asociado con su registrador para que contenga los mensajes compatibles con el cliente. Este archivo de propiedades está en el proyecto MyServiceModule-Cliente bajo el paquete de propiedades 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;

Pueden generarse dos tipos de excepciones:

Excepciones de aplicación
Una excepción de aplicación es una excepción de tipo de componente que se utiliza para señalar sucesos de negocio como, por ejemplo, parámetros no válidos. El componente declara explícitamente las excepciones de aplicación que puede generar. Esta excepción de aplicación amplía una clase de excepción de aplicación abstracta aplicable a una estructura que coincida con la información de excepción que se ha de incluir con las respuestas del BOD. Al crear la instancia, el mensaje correspondiente se registra como mensaje INFO.
Excepciones del sistema
Una excepción del sistema es una excepción no comprobada y que no es necesario que el cliente detecte de forma explícita. Estas excepciones del sistema indican un error subyacente (defecto de código, problemas de conexión, error no recuperable) que debe manejar la infraestructura, no el componente. Si los componentes desean generar excepciones del sistema, deben ampliar la nueva clase de excepción del sistema abstracta para registro común y otra calidad del servicio. Al crear la instancia, el mensaje correspondiente se registra como mensaje SEVERE, pero se informa al usuario de una respuesta de error genérico del sistema.