Secciones

Artículos para tus primeros pasos

Si estás empezando a introducirte en el mundo de Groovy y Grails, no te pierdas nuestros artículos básicos: 

Entrevistas con los expertos
 

Los protagonistas te cuentan de qué van los proyectos más importantes del mundo Groovy:


Un proyecto de:
ImaginaWorks
Campus Escuela de Groovy

Grails

No generar stacktrace para mis Exceptions

Alonso Rivera - miércoles 04/11/2009

Hola,

Me gustaria saber si es posible condicionar con alguna configuracion la forma en que grails genera la traza de errores dependiendo cierto tipo de excepciones como por ejemplo el caso mas comun seria un servicio con un metodo que declare que lanza una excepcion propia

class ServicioService {

  def servicio() throws ApplicationException {

  ...

...

}

 En este caso ApplicationException es una exception propia lanzada bajo alguna condicion que evite la correcta ejecucion del metodo como por ejemplo una validacion. En ese caso grails de todas formas me genera un stacktrace que no es necesario porque es una exception controlada.

Lo que requiero es algo muy parecido a las reglas de ApplicationException en la especificacion EJB donde las exception declaradas no generan traza en el servidor y las otras (System Exceptions), si.

Espero se entienda mi duda

 

Re: No generar stacktrace para mis Exceptions

Nacho - jueves 05/11/2009

Hola Alonso,

ten en cuenta que Grails está en la capa web de JavaEE, no en la de EJBs. El modelo de excepciones Aplication/System no aplica, así que el tratamiento es el de siempre teniendo en cuenta que estamos en Groovy, y que por tanto todas las excepciones son unchecked, aunque no hereden de RuntimeException.

Re: No generar stacktrace para mis Exceptions

Alonso Rivera - jueves 05/11/2009
Ok, entiendo

ahora ¿existe la forma de interceptar los action de los controllers ya sea con filters o interceptors para no tener que repetir el manejo de ApplicationException general en cada action que llame a un servicio?. Por ejemplo actualmente tengo:

class UnController {
    def servicio

    accion1 = {
        try {
          ...
          servicio.unMetodo()
          ...
        }
        catch (ApplicationException e) {
          //Envia a pag de error para app exception
        }
    }
    
    accion2 = {
        try {
          ...
          servicio.otroMetodo()
          ...
        }
        catch (ApplicationException e) {
          //Envia a pag de error para app exception
        }
    }

}

Tengo que repetir bloque try / catch en cada action para que no me genere traza innecesaria.

Si utilzo exception handler segun este link http://blog.bruary.net/2008/03/grails-custom-exception-handling.html de todas formas me genera traza para ApplicationException.
Responder al hilo | Volver al foro "Grails" | Volver a los foros