2011-06-06 15 views
17

¿Cómo imprimo un rastro de pila Groovy? El método de Java, Thread.currentThread(). GetStackTrace() produce un gran rastro de pila, que incluye muchas de las partes internas de Groovy. Veo una función llamada dos veces desde un StreamingMarkupBuilder que parece que solo se debe llamar una vez y me gustaría ver por qué Groovy piensa que debería llamarla dos veces.¿Cómo imprimo un rastro de pila Groovy?

Respuesta

13

una búsqueda en Google devuelve el following information:

Al parecer, hay un método en el org.codehaus.groovy.runtime.StackTraceUtils llamada printSanitizedStackTrace. No hay mucha documentación para el método, aunque hay un método llamado sanitize que se describe como

quitar todas las entradas de rastreo parecer maravilloso-internas de la instancia de excepción Esto modifica el original instancia y lo devuelve , no lo hace clon

Así que me gustaría probar org.codehaus.groovy.runtime.StackTraceUtils.printSanitizedStackTrace(Throwable t) (es estática) y ver si funciona para usted.

+11

Solución final: org.codehaus.groovy.runtime.StackTraceUtils.sanitize (nueva Excepción()). PrintStackTrace(). Por algún motivo, printSanitizedStackTrace() no funciona. – dromodel

+1

Podría ser que printSanitizedStackTrace() no se comporte como esperaba porque está esperando el resultado en System.out, mientras que printSanitizedStackTrace() lo envía a System.err. Traté de agregar un PrintWriter construido a partir de agregar System.out como el segundo parámetro, después del objeto Throwable, pero todavía no obtuve nada de lo que esperaba en la salida. – jonnybot

+0

Esto funciona para mí: '' org.codehaus.groovy.runtime.StackTraceUtils.sanitize (nueva excepción (e)). PrintStackTrace() '' 'donde' '' e''' es la excepción atrapada – lrkwz

Cuestiones relacionadas