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

发布于 2024-07-13 03:15:36 字数 68 浏览 5 评论 0原文

如何使用速度模板打印异常的完整堆栈跟踪

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

How to print the complete stack trace of the exception using a velocity template

My present template has $exception as template variable, which contains the exception.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ペ泪落弦音 2024-07-20 03:15:36

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

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

In velocity this is how i solved this problem.

#foreach ($i in [1..3])     
   #if($exception.Cause)
           #set($exception = $exception.Cause)
           #foreach($stack in $exception.getStackTrace())
               $stack.toString()
           #end     
    #end
#end
(り薆情海 2024-07-20 03:15:36

如果您想在输出上显示跟踪,您可以将评估方法包装在 try-catch-finally 块内。 在 catch 中写入堆栈跟踪或仅向编写器写入异常消息。 在最后部分只需刷新作者即可。

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

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

In case you want to display the trace on the output you could wrap the evaluate method inside try-catch-finally block. In catch write the stack trace or just the message of the exception to the writer. In the finally section just flush the writer.

Something like this if I remember right:

StringWriter w = new StringWriter();
try {
    Velocity.evaluate( context, w, "mystring", s );
} catch (Exceptions... e)
    w.write(e.getMessage());
} finally {
    w.flush();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文