enjoy魔板引擎问题

正常java代码抓取异常用try catch,那么如果魔板引擎中有java代码写错或者报异常,那么我该怎么抓取错误,然后让页面正常显示?

下图是正常的报错示例。我想用try catch方式抓取这个异常,该怎么写???

image.png

评论区

JFinal

2019-09-17 11:10

模板在执行的时候,已然是在向客户端/浏览器发送数据了,也就是说一边执行一边发送数据

这个时候再 try catch 意义不大,所以,一定要确保模板输出是正确的

好在模板输出是一个很简单的工作,只是数据展示而已,不容易出错

如果一定要 try catch ,可以添加自定义指令,例如:
#try
....
#catch(....)
....
#end

但是不建议这么做

更简单的做法是继承 ErrorRender 并扩展它,在扩展的 ErrorRender 中可以做很多事情,最后通过配置 me.setRenderFactory(....) 用上自己扩展的 ErrorRender

小白菜111

2019-09-17 15:26

@JFinal 继承了ErrorRender,在me.setRenderFactor(‘里面是需要IRenderFactory’),而我自定义的是继承ErrorRender类型不对吗?功力不够,望解答。
参考了以下文章
如这篇文章。http://www.jfinal.com/feedback/2298
还有这篇文章。http://www.jfinal.com/share/311

JFinal

2019-09-17 16:27

继承以后,这样用上:
me.setRenderFactory(new RenderFactory() {
public Render getErrorRender(int errorCode, String view) {
return new MyErrorRender(errorCode, view);
}

public Render getErrorRender(int errorCode) {
return new MyErrorRender(view);
}
);

其中的 MyErrorRender 就是你扩展 ErrorRender 而来的

JFinal

2019-09-17 16:28

me.setRenderFactory(new RenderFactory()...)
仅仅起到一个切换作用, 将你的 MyErrorRender 可以用上

为什么能起到切换作用, 因为你在 new RenderFactory 的时候覆盖了父类的两个 getErrorRender 方法