以前都是用 SimpleMappingExceptionResolver拦截实现,今天偶尔看下资料, @ExceptionHandler,就把这个异常给拦截了,太方便了!
相关参考:
Spring 注解学习手札(一) 构建简单Web应用
Spring 注解学习手札(二) 控制层梳理
Spring 注解学习手札(三) 表单页面处理
Spring 注解学习手札(四) 持久层浅析
Spring 注解学习手札(五) 业务层事务处理
Spring 注解学习手札(六) 测试
Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
Spring 注解学习手札(八) 补遗——@ExceptionHandler
直接上代码:
@Controller public class AccessController { /** * 异常页面控制 * * @param runtimeException * @return */ @ExceptionHandler(RuntimeException.class) public @ResponseBody Map<String,Object> runtimeExceptionHandler(RuntimeException runtimeException) { logger.error(runtimeException.getLocalizedMessage()); Map model = new TreeMap(); model.put("status", false); return model; } }
当这个Controller中任何一个方法发生异常,一定会被这个方法拦截到。然后,输出日志。封装Map并返回,页面上得到status为false。就这么简单。
或者这个有些有些复杂,来个简单易懂的,上代码:
@Controller public class AccessController { /** * 异常页面控制 * * @param runtimeException * @return */ @ExceptionHandler(RuntimeException.class) public String runtimeExceptionHandler(RuntimeException runtimeException, ModelMap modelMap) { logger.error(runtimeException.getLocalizedMessage()); modelMap.put("status", IntegralConstant.FAIL_STATUS); return "exception"; } }
相关参考:
Spring 注解学习手札(一) 构建简单Web应用
Spring 注解学习手札(二) 控制层梳理
Spring 注解学习手札(三) 表单页面处理
Spring 注解学习手札(四) 持久层浅析
Spring 注解学习手札(五) 业务层事务处理
Spring 注解学习手札(六) 测试
Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
Spring 注解学习手札(八) 补遗——@ExceptionHandler