§错误处理 Finding Issue

jetbrick-template 提供了强大的错误定位功能,你再也不用担心找不到错误原因了。

§1. 语法错误 Syntax Error

错误的模板示例:

#for (user: userlist)

${for.index}${user.name}${user.vip ? "vip", "normal"}

#end

错误提示包括了:错误所在的行号和列号,错误模板路径,错误原因等

jetbrick.template.parser.SyntaxException: mismatched input ',' expecting {'[', '?', ':', '.', '===', '!==', '==', '!=', '>', '=', '<=', '&&', '||', '+', '-', '*', '/', '%', '&', '|', '^', '<>', '>>>', 'instanceof'}

template: /samples/syntax-error-test.jetx: 5,28

-------------------------------------------------------------------------------

3:

${for.index}

4:

${user.name}

5:

${user.vip ? "vip", "normal"}

^ -- here

6:

7: #end

-------------------------------------------------------------------------------

at jetbrick.template.parser.AstBuilder$AstErrorListener.syntaxError(AstBuilder.java:77)

at org.antlr.v4.runtime.ProxyErrorListener.syntaxError(ProxyErrorListener.java:67)

at org.antlr.v4.runtime.Parser.notifyErrorListeners(Parser.java:561)

at org.antlr.v4.runtime.DefaultErrorStrategy.reportInputMismatch(DefaultErrorStrategy.java:327)

at org.antlr.v4.runtime.DefaultErrorStrategy.reportError(DefaultErrorStrategy.java:150)

at jetbrick.template.runtime.parser.grammer.JetTemplateParser.expression(JetTemplateParser.java:2309)

at jetbrick.template.runtime.parser.grammer.JetTemplateParser.expression(JetTemplateParser.java:2235)

at jetbrick.template.runtime.parser.grammer.JetTemplateParser.value(JetTemplateParser.java:313)

at jetbrick.template.runtime.parser.grammer.JetTemplateParser.block(JetTemplateParser.java:188)

at jetbrick.template.runtime.parser.grammer.JetTemplateParser.directive_for(JetTemplateParser.java:1027)

at jetbrick.template.runtime.parser.grammer.JetTemplateParser.directive(JetTemplateParser.java:427)

at jetbrick.template.runtime.parser.grammer.JetTemplateParser.block(JetTemplateParser.java:219)

at jetbrick.template.runtime.parser.grammer.JetTemplateParser.template(JetTemplateParser.java:117)

at jetbrick.template.parser.AstBuilder.create(AstBuilder.java:49)

at jetbrick.template.JetTemplateImpl.rebuildAstNodeAndConfig(JetTemplateImpl.java:111)

at jetbrick.template.JetTemplateImpl.reload(JetTemplateImpl.java:82)

at jetbrick.template.JetEngineImpl.getTemplate(JetEngineImpl.java:91)

§2. 运行期错误 Runtime Error

如果在模板运行期间发生错误,那么就可以得到类似下面的错误 Java Exception Stack。

模板示例:

#for (user: userlist)

${for.index}${user.name}${user.vip ? "vip" : "normal"}

#end

错误提示包括了:错误所在的行号和列号,错误模板路径,错误原因等

jetbrick.template.runtime.InterpretException: property get error: vip

template: /samples/runtime-error-test.jetx: 5, 16

-------------------------------------------------------------------------------

3:

${for.index}

4:

${user.name}

5:

${user.vip ? "vip" : "normal"}

^ -- here

6:

7: #end

-------------------------------------------------------------------------------

at jetbrick.template.parser.ast.AstInvokeField.doInvokeGetter(AstInvokeField.java:76)

at jetbrick.template.parser.ast.AstInvokeField.execute(AstInvokeField.java:51)

at jetbrick.template.parser.ast.AstValue.execute(AstValue.java:36)

at jetbrick.template.parser.ast.AstStatementList.execute(AstStatementList.java:182)

at jetbrick.template.parser.ast.AstDirectiveFor.execute(AstDirectiveFor.java:59)

at jetbrick.template.parser.ast.AstStatementList.execute(AstStatementList.java:182)

at jetbrick.template.parser.ast.AstTemplate.execute(AstTemplate.java:37)

at jetbrick.template.JetTemplateImpl.doInterpret(JetTemplateImpl.java:154)

at jetbrick.template.JetTemplateImpl.render(JetTemplateImpl.java:139)

Caused by: java.lang.RuntimeException: java.lang.UnsupportedOperationException

at jetbrick.util.ExceptionUtils.unchecked(ExceptionUtils.java:33)

at jetbrick.util.ExceptionUtils.unchecked(ExceptionUtils.java:31)

at jetbrick.bean.MethodInfo.invoke(MethodInfo.java:194)

at jetbrick.bean.PropertyInfo.get(PropertyInfo.java:111)

at jetbrick.template.parser.ast.AstInvokeField.doInvokeGetter(AstInvokeField.java:70)

... 10 more

Caused by: java.lang.UnsupportedOperationException

at jetbrick.demo.Model.getVip(Model.java:38)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:483)

at jetbrick.bean.MethodInfo.invoke(MethodInfo.java:192)

... 12 more

根据 root cause,我们可以看到是 user.vip 这个属性调用,抛出了 UnsupportedOperationException。

java 500错误页面模板_模板详细错误相关推荐

  1. 西门子精简触摸屏编译出现内部错误,但没有详细错误信息的处理对策

    西门子精简触摸屏编译出现内部错误,但没有详细错误信息的处理对策 如果项目在编译过程中报错,但是没有具体的报错信息,或者显示未知错误.我们可以尝试对项目做"软件–全部重建"操作.如下 ...

  2. 无法读取内存属于错误吗_索佳全站仪错误信息讲解

    介绍操作仪器过程中发生错误时给出的提示信息及其含义,如果同一错误信息不断出现或者出现下列之外的错误信息,请与索佳技术服务中心联系. 附属文件错误 (  Attached file err) 所选文件扩 ...

  3. java 获取400的错误信息_获取400错误的请求Spring RestTemplate POST

    我想使用POST方法使用Spring Rest web服务.我无法在客户端(网站)访问POJO文件,因此必须在客户端使用JSON并在Web服务中使用POJO.下面是我的代码:获取400错误的请求Spr ...

  4. iis php网站500错误原因_因为曾经错误安装过PHP5.2而导致IIS7无法正常工作,显示500错误提示,大家帮忙看看!...

    我的系统是VISTA,使用自带的IIS7,对ASP网页一直浏览正常.最近因自己心血来潮错误安装了一次PHP5.2.主要操作是: 1.下载的是自动安装的PHP5.2程序,自动选ISAPI按钮安装: 2. ...

  5. java pattern堆栈溢出_堆栈溢出错误与正则表达式进行解析

    我知道有关于正则表达式和长字符串的堆栈溢出错误的一些帖子,但它们没有帮助我,也从不关心我的解析问题类型. 我只是试图从数学函数中找到括号中的字符串,例如 funktionsstring =SIN(3. ...

  6. java打开文件出错_打开文件错误太多,java.io.FileNotFoundException

    在我的程序中,我有循环扫描一堆文件并读取其内容.问题发生在大约1500个文件的迭代中,似乎无法再现(或理解(由我)) 问题: java.io.FileNotFoundException: /path/ ...

  7. python编制应用程序错误怎么办_应用程序错误怎么办

    展开全部 关于内存62616964757a686964616fe78988e69d8331333234313966不能read,written的解决方案 这种情况偶尔出现,没什么关系,不用管他.点击' ...

  8. java程序员发展_超详细的Java程序员职业发展路径,值得深思!

    在国内IT行业招聘中,大量的招聘需求都是和Java相关,且比例还在上升.巨大的人才缺口直接导致各企业纷纷以高薪聘请Java人才.那么,Java工程师的职业发展路径是什么样的?小白入门Java后,成长路 ...

  9. java stack (null -1)_关于单链表实现的一个stack的问题

    背景:菜鸟一枚,想补补基础.最近在看算法 ,1.3.26有一道题是:编写一个方法remove()接受一条链表和一个字符串key作为参数,删除链表中所有的item域为key的节点. 上代码: publi ...

  10. java tomcat 404配置_在Tomcat中配置404自定义错误页面详解

    一直使用tomcat,今天想到一个问题,自定义404错误页面, 为了获得很好的用户感受,是不应当向用户暴露404这样的页面的, 问题的出发点是我在Struts2中定义错误页面, 在Struts2中是这 ...

最新文章

  1. Android 将ARGB图片转换为灰度图
  2. Xilinx---vivado系列
  3. android edittext email,Android上EditText上的电子邮件地址验证
  4. 计算机房防火要求,信息机房如何进行防火设计
  5. unc 隐藏共享文件夹_(原创)UNC路径的访问条件
  6. linux服务器非root用户安装Anaconda,并配置tensorflow/pytorch
  7. hiveserver2启动不起来_汽车一键启动除了点火,还有这些功能!车主:现在才明白...
  8. PowerLinux 服务器上安装 Oracle (详细步骤)
  9. web前端----------网易云音乐播放器简单的实现(素材自行下载)
  10. C 语言编码规范(MISRA-C-:2004)
  11. 在线考试小程序版手机微信考试软件,微信小程序考试系统出考试题小程序,考试答题微信小程序
  12. AI从零开始之我们为什么要为了那个虚无缥缈的f而奋斗
  13. chrome浏览器完整保存整个网页 可离线访问
  14. 打开conda环境报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x9a in position 317: illegal multibyt
  15. 中值定理5-泰勒中值定理
  16. java 奇数trun_N26-博客作业-week15
  17. 【多益网络校招提前批】22届的同学可以冲啦
  18. cli sti cld std
  19. android开发中遇到的问题汇总
  20. app下载统计 php,如何统计app在各个渠道的下载量?

热门文章

  1. 通过dSYM文件分析crash日志
  2. Openresty 安装luarocks
  3. 彻底关闭win10自动更新
  4. 330425-01-00本特利内华达加速度计
  5. php连接oracle数据库超详细教程
  6. EAGLE转Protel文件
  7. 5G和北斗,交通行业新基建的正确打开方式
  8. 令人耳目一新的20款英文手写字体盘点
  9. SAP检验批次批量取消程序示例(备份)
  10. vs2005 c++ mfc程序无法打开资源文件