spring 处理异常

spring提供了3种方式将异常转化为响应

  1. 特定spring异常将会自动映射为指定的http状态码
  2. 异常上可以添加@responseStatus注释,从而讲将其映射为某一个http状态码.
  3. 在方法上可以添加@ExceptionHandler注释,使其用来处理异常.
spring的一些异常会默认映射为http状态码

以上异常一般由spring自身抛出,作为DispatchServlet处理过程中或执行校验时出现问题的结果.

但是 ,如果多个 控制器类中都要抛出某个特定的异常,那么在所有 的控制器方法中 都要重复相同的@ExceptionHandler方法.
spring 解决方法:控制器通知
控制器通知是带有@ControlAdvice注解的类,这个类 会包含一个或多个如下类型的方法 :

  • @ExceptionHandler 注解标注的方法
  • @InitBinder
  • @ModelAttribute
    在带有@ControllerAdvice注解的类中 ,以上所述的这些方法会运用到 程序所有控制器 中带有@requestMapping注解的方法上
    @controlAdvice注解本身已经使用了@component ,因此@controllerAdvice注解所标注的类将会被组件扫描获取到(与带有compent注解的类一样)
    @ControlAdvice最为使用的一个场景就是将所有的@ExceptionHandler方法收集到一个类中,这样所有控制器的异常就能 在一个地方进行一致的处理 .
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,128评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,348评论 6 342
  • spring官方文档:http://docs.spring.io/spring/docs/current/spri...
    牛马风情阅读 1,875评论 0 3
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 6,432评论 0 4
  • 先描述一下昨天遇一号线故障的经历。前提是晚上有事情不能迟到还特意提前了半小时下班。首先在站台比平时多等了10分钟才...
    桐叶轻和阅读 469评论 0 0

友情链接更多精彩内容