Manejo de errores de páginas JSP

El manejo de errores de las páginas JSP puede realizarse de varias maneras.

Manejo de errores dentro de la página actual

En las páginas JSP que requieren un manejo y una recuperación de errores más complejo, puede escribir una página para que maneje directamente los errores desde el bean de datos; es decir, manejar los errores desde dentro de la misma página. La página JSP puede detectar las excepciones generadas por el bean de datos o puede buscar códigos de error establecidos en cada bean de datos, dependiendo de cómo se haya activado el bean de datos. La página JSP puede entonces llevar a cabo la acción de recuperación adecuada en función del error recibido. Una página JSP puede utilizar cualquier combinación de los siguientes ámbitos de manejo de errores.

La página JSP puede utilizar bloques try y catch para capturar la excepción de modo que pueda llevar a cabo la acción adecuada en función del tipo de excepción. El siguiente es un ejemplo de un fragmento de código JSP que utiliza sentencias Java try y catch:

SomeDataBean sdb = new SomeDataBean();
sdb.setSomeProperty("");
try {         
	com.ibm.commerce.beans.DataBeanManager.activate(sdb, request); }
catch(Exception ex){
  //Handle the exception in whichever way you want..
}

Para obtener más detalles sobre un error, incluya un ErrorDataBean en el archivo JSP. Se puede crear una instancia de ErrorDataBeans, se pueden llenar y utilizar. A continuación se proporciona un ejemplo:

ErrorDataBean errorBean = new ErrorDataBean ( );
com.ibm.commerce.beans.DataBeanManager.activate (errorBean, request);

Una vez que se ha creado una instancia del bean de datos, éste cuenta con métodos para obtener ExceptionData, ExceptionMessage, MessageKey, ExceptionType, y otros métodos de ayudante.

Para archivos JSP de escaparate, utilice StoreErrorDataBean para manejar los errores.

Manejo de errores fuera de la página actual

Puede tener una página de manejo de errores dedicada separada, delegando la petición a esa página, cuando se produce una excepción en la página JSP actual. Cuando utiliza una página de manejo de errores diferente, puede tener dos opciones: Manejo de errores a nivel de aplicación o de página.

Manejo de errores a nivel de página

Una página JSP puede especificar su propia página JSP de error predeterminada de una excepción que se produce dentro de ella, mediante el código de error JSP. De este modo, la página JSP puede especificar su propio manejo de un error. Si una página JSP no contiene un código de error JSP, el error se redirige a la página JSP de error a nivel de aplicación.

A continuación se muestra un ejemplo de la inclusión del manejo de errores a nivel de página:

  1. Cree una página JSP de error individual que maneje los errores que se producen en todas las demás páginas JSP de la aplicación. Para especificar una página JSP como una página errorHandler, utilice esta directiva de página JSP:
       <%@ page isErrorPage="true" %> 
    En la página JSP errorHandler, utilice ErrorDataBean o StoreErrorDataBean para recuperar más información sobre los mensajes de excepción y de visualización.
  2. Incluya la página JSP errorHandler en otras páginas JSP, utilizando esta directiva JSP para especificar que si se producen excepciones en la página actual, se envíe la solicitud a errorHandler.jsp:
    <%@ page errorPage="/errorHandler.jsp" %>

Manejo de errores a nivel de aplicación

HCL Commerce una aplicación puede especificar una página JSP de error predeterminada cuando se produce una excepción desde cualquiera de sus servlets o páginas JSP. La página JSP de error a nivel de aplicación se puede utilizar como un manejador de errores a nivel de sitio o a nivel de tienda.

Utilice la estrategia de manejo de errores a nivel de aplicación solo cuando sea necesario.

Incluya el manejador de errores a nivel de aplicación utilizando el descriptor de despliegue (WEB-INF/web.xml) de la aplicación web. Por ejemplo, si desea manejar una PaymentException de forma genérica en el nivel de aplicación, codifique un archivo paymentError.jsp y especifique el nombre en el archivo web.xml mediante el código <error-page>. A continuación se proporciona un ejemplo:

<error-page> 
  <exception-type>PaymentException</exception-type> 
  <location>/paymentError.jsp</location>
</error-page>

Utilizando este ejemplo, si se genera PaymentException en una página JSP que no maneja ciertos tipos de excepciones, o si la página JSP no especifica su propia página de error, la solicitud se redirige a paymentError.jsp. El archivo paymentError.jsp puede utilizar ErrorDataBean o StoreErrorDataBean para recuperar más información sobre la excepción.

Para incluir una página genérica para todas las excepciones, a nivel de aplicación, utilice el siguiente archivo web.xmlweb.xml:

<error-page>
  <exception-type>Exception</exception-type>
  <location>/paymentError.jsp</location>
</error-page>

En la etiqueta exception-type, en lugar de utilizar el nombre de clase de excepción, puede especificar el código de error específico, como el error de navegador 404, que es un error de página no encontrada.<exception-type>

Nota: Un cambio en el contenedor web puede hacer que el contenedor web maneje una excepción JSP en lugar de que el error se propague al servlet de Commerce para su debido manejo. Para devolver excepciones al servlet que esté realizando la asignación, añada la propiedad personalizada com.ibm.ws.webcontainer.dispatcherRethrowSER a los valores del contenedor web, y establezca la propiedad en true.