【发布时间】:2017-10-24 23:14:11
【问题描述】:
如何在运行时在 Velocity 模板中打印准确的异常行号?
我正在使用 Veloeclipse 进行开发以验证与语法相关的问题。这可行,但缺少基于运行时的异常信息。
我正在向 VT 的上下文发送一个日志记录对象,所以当我想记录某些内容时,我使用 $logging.log(contenttobelogged)
如果在运行时发生异常,异常跟踪不包含 Velocity 模板的任何行号详细信息。
为此,我必须为每一行记录日志,因此日志会使代码变得讨厌。你能指导我用正确的行号记录错误吗?
异常跟踪:
Template Name @@@@@@@@@@@@@@@@@@@@ yes/po/POSSellerRSPGridData_JSON.vm
org.apache.velocity.exception.MethodInvocationException: Invocation of method 'get' in class java.util.ArrayList threw exception class java.lang.IndexOutOfBoundsException : Index: 1, Size: 1
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:308)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:202)
at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:345)
at org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:135)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:94)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:109)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:94)
at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:344)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:153)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:94)
at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:344)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:153)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:271)
at org.apache.velocity.Template.merge(Template.java:296)
at ecnet.rd.core.template.TemplateResolver.merge(TemplateResolver.java:81)
at ecnet.rd.helper.YES_PO_Helper.mergerTemplateDetails(YES_PO_Helper.java:166)
【问题讨论】: