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

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

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


直接上代码:

Java代码 收藏代码
  1. @Controller
  2. publicclassAccessController{
  3. /**
  4. *异常页面控制
  5. *
  6. *@paramruntimeException
  7. *@return
  8. */
  9. @ExceptionHandler(RuntimeException.class)
  10. public@ResponseBody
  11. Map<String,Object>runtimeExceptionHandler(RuntimeExceptionruntimeException){
  12. logger.error(runtimeException.getLocalizedMessage());
  13. Mapmodel=newTreeMap();
  14. model.put("status",false);
  15. returnmodel;
  16. }
  17. }


当这个Controller中任何一个方法发生异常,一定会被这个方法拦截到。然后,输出日志。封装Map并返回,页面上得到status为false。就这么简单。

或者这个有些有些复杂,来个简单易懂的,上代码:
Java代码 收藏代码
  1. @Controller
  2. publicclassAccessController{
  3. /**
  4. *异常页面控制
  5. *
  6. *@paramruntimeException
  7. *@return
  8. */
  9. @ExceptionHandler(RuntimeException.class)
  10. publicStringruntimeExceptionHandler(RuntimeExceptionruntimeException,
  11. ModelMapmodelMap){
  12. logger.error(runtimeException.getLocalizedMessage());
  13. modelMap.put("status",IntegralConstant.FAIL_STATUS);
  14. return"exception";
  15. }
  16. }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值