JFinal的AOP能否实现异常统一处理

如题,想用AOP实现友好的异常页面跳转以及异常的监控,是否可行?

评论区

JFinal

2016-08-31 11:09

很多人都在这么用,必然是可以的,利用一个全局拦截器,将 inv.invoke() 包裹在 try catch 之中,并处理好 catch 即可。
一般来说只要在 catch 中使用 inv.getController().render(...) 或 redirect(...) 就可以控制跳转了,监控的话,可将异常写日志,也可以是将异常发给专用的监控模块

Romeo

2016-08-31 11:40

不只是Jfinal哦,好多框架都是这么做的。

小鑫要宵夜

2016-08-31 16:59

@JFinal 好的,感谢!

小鑫要宵夜

2016-08-31 17:00

@Romeo 有点疑问,如果在controller里已经try catch了,拦截器中还能否获取到异常?

Romeo

2016-08-31 17:09

@小鑫要宵夜 不能,拦截器里一般设置一些通用的异常处理,controller可以设置特定的

小鑫要宵夜

2016-09-01 14:59

@Romeo 好的,感谢回答!

JFinal

2016-09-01 15:12

@小鑫要宵夜 如果 controller 里面 try catch,只要再接着向上抛出被捕获的异常,拦截器仍然可以收到,如果吃掉异常不抛出来,上层就接收不到了

绝望的八皮

2016-09-01 15:35

以前做过一个类似的统一异常处理,可以参考一下
https://github.com/b1412/jfinal-ext/blob/master/src/main/java/com/jfinal/ext/interceptor/ExceptionInterceptor.java

fansunion

2018-10-10 17:44

@JFinal 我反馈的时候,答复过。觉得有问题,异常上下文是 当前controller,直接render(error/500.html) 页面路径会不对吧。当前Controller默认路径可能是“_view/brand/”,而500页面在error目录。

livem

2020-08-18 17:35

热门反馈

扫码入社