render页面时自定义标签抛出异常不能捕获

	public void index() {

		try {
			this.render("index.html");
		} catch (Exception e) {
			System.out.println(e.getMessage());
			this.redirect("/error");
		}
	}


请问:做项目时用到了自定义标签,标签中的逻辑代码抛出业务异常,但Controller中却无法捕获。请问是否正常,另外,有没有其它方式能捕获到异常???

评论区

要输就输给追求

2019-05-21 17:46

拦截器里面可以捕获到

糊搞

2019-05-21 17:59

@要输就输给追求 已经验证,拦截器里也不行,Handler还没有试。。。

杜福忠

2019-05-21 18:09

this.render("index.html"); 只是设置 render对象,并没有执行内容。
执行是在 ActionHandler 中的 render.setContext(request, response, action.getViewPath()).render();
要拦截的话, 可以在JFinalConfig子类的 configConstant(Constants me) {me.setRenderFactory(自定义IRenderFactory)
或者自定义Handler

杜福忠

2019-05-21 18:16

PS 是想自定义 500 页面?

糊搞

2019-05-21 20:43

杜福忠

2019-05-21 22:52

@糊搞 可以在JFinalConfig子类的 configConstant(Constants me) { me.setError500View("/_view/common/error/500.html"); 而且是支持JF模版的,根据参数,还可以在里面做更多操作

糊搞

2019-05-31 19:49

@杜福忠 谢谢指教,我已经用另外的方式实现。。。

热门反馈

扫码入社