如何在速度模板中打印异常的堆栈跟踪

时间:2009-02-06 19:56:32

标签: exception stack-trace velocity

如何使用速度模板

打印异常的完整堆栈跟踪

我现在的模板将$ exception作为模板变量,其中包含异常。

2 个答案:

答案 0 :(得分:1)

在速度方面,这就是我解决这个问题的方法。

#foreach ($i in [1..3])     
   #if($exception.Cause)
           #set($exception = $exception.Cause)
           #foreach($stack in $exception.getStackTrace())
               $stack.toString()
           #end     
    #end
#end

答案 1 :(得分:0)

如果要在输出上显示跟踪,可以将evaluate方法包装在try-catch-finally块中。在catch中写入堆栈跟踪或只是写入异常的消息。在finally部分中只需刷新编写器。

如果我没记错的话就是这样:

StringWriter w = new StringWriter();
try {
    Velocity.evaluate( context, w, "mystring", s );
} catch (Exceptions... e)
    w.write(e.getMessage());
} finally {
    w.flush();
}