您的位置:首页 > 编程语言 > Java开发

Spring 注解学习手札(八)补遗——@ExceptionHandler

2016-08-25 14:32 417 查看
Spring注解,改变了我的开发思路。前段时间,用@RequestBody@ResponseBody,不费吹灰之力就解决了JSon自动绑定。接着就发现,如果遇到RuntimeException,需要给出一个默认返回JSON。

以前都是用SimpleMappingExceptionResolver拦截实现,今天偶尔看下资料,@ExceptionHandler,就把这个异常给拦截了,太方便了!

相关参考:
Spring 注解学习手札(一) 构建简单Web应用
Spring 注解学习手札(二) 控制层梳理
Spring 注解学习手札(三) 表单页面处理
Spring 注解学习手札(四) 持久层浅析
Spring 注解学习手札(五) 业务层事务处理
Spring 注解学习手札(六) 测试
Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
Spring 注解学习手札(八) 补遗——@ExceptionHandler


直接上代码:

Java代码  


@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。就这么简单。


或者这个有些有些复杂,来个简单易懂的,上代码:

Java代码  


@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 mvc 框架 spring
相关文章推荐