没有合适的资源?快使用搜索试试~ 我知道了~
源码剖析Springboot自定义异常.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 152 浏览量
2022-06-28
21:58:59
上传
评论
收藏 33KB DOCX 举报
温馨提示
试读
14页
博主看到新服务是封装的自定义异常,准备入手剖析一下,自定义的异常是如何进行抓住我们请求的方法的异常,并进行封装返回到。废话不多说,先看看如何才能实现封装异常,先来一个示例: 1 @ControllerAdvice 2 public class TstExceptionHandle{ 3 4 @ExceptionHandler(Exception.class) 5 public void myExceptionHandle(HttpServletResponse response){ 6 response.setStatus(403); 7 System.out.println("做封装处理"); 8 } 9 10 } 博主只做了简单的配置示例,主要的是进行源码剖析Springboot是如何获取自定义异常并进行返回的。来吧! 第一步:肯定是在Springboot启动的过程中进行的异常处理初始化,于是就找到了handlerExceptionResolver类,在创建该类的时候,会进行添加我们自定义异常。
资源推荐
资源详情
资源评论
源码剖析 Springboot 自定义异常
博主看到新服务是封装的自定义异常,准备入手剖析一下,自定义的异常是如
何进行抓住我们请求的方法的异常,并进行封装返回到。废话不多说,先看看
如何才能实现封装异常,先来一个示例:
1 @ControllerAdvice
2 public class TstExceptionHandle{
3
4 @ExceptionHandler(Exception.class)
5 public void myExceptionHandle(HttpServletResponse response){
6 response.setStatus(403);
7 System.out.println("做封装处理");
8 }
9
10 }
博主只做了简单的配置示例,主要的是进行源码剖析 Springboot 是如何获取自
定义异常并进行返回的。来吧!
第一步:肯定是在 Springboot 启动的过程中进行的异常处理初始化,于是就找
到了 handlerExceptionResolver 类,在创建该类的时候,会进行添加我们自定
义异常。
1 public HandlerExceptionResolver handlerExceptionResolver(
2 @Qualifier("mvcContentNegotiationManager")
ContentNegotiationManager contentNegotiationManager) {
3 List<HandlerExceptionResolver> exceptionResolvers = new
ArrayList<>();
4 //不用管这个方法,这个方法主要进行的是调用实现了 WebMvcConfigurer 接口
bean 的 configureHandlerExceptionResolvers 方法,系统的都是空方法
5 configureHandlerExceptionResolvers(exceptionResolvers);
6 if (exceptionResolvers.isEmpty()) {
7 //我们的在这里才添加,我们看看这个方法
8 addDefaultHandlerExceptionResolvers(exceptionResolvers,
contentNegotiationManager);
9 }
10 extendHandlerExceptionResolvers(exceptionResolvers);
11 HandlerExceptionResolverComposite composite = new
HandlerExceptionResolverComposite();
12 composite.setOrder(0);
13 composite.setExceptionResolvers(exceptionResolvers);
14 return composite;
15 }
org/springframework/web/servlet/config/annotation/
WebMvcConfigurationSupport
1 protected final void
addDefaultHandlerExceptionResolvers(List<HandlerExceptionResolver>
exceptionResolvers,
2 ContentNegotiationManager mvcContentNegotiationManager) {
3
4 ExceptionHandlerExceptionResolver exceptionHandlerResolver =
createExceptionHandlerExceptionResolver();
5
exceptionHandlerResolver.setContentNegotiationManager(mvcContentNegotiat
ionManager);
6
exceptionHandlerResolver.setMessageConverters(getMessageConverters());
7
exceptionHandlerResolver.setCustomArgumentResolvers(getArgumentResolvers
());
8
exceptionHandlerResolver.setCustomReturnValueHandlers(getReturnValueHand
lers());
9 if (jackson2Present) {
10 exceptionHandlerResolver.setResponseBodyAdvice(
11 Collections.singletonList(new
JsonViewResponseBodyAdvice()));
12 }
13 if (this.applicationContext != null) {
14
exceptionHandlerResolver.setApplicationContext(this.applicationContext);
15 }
16 //上面的 都是设置的属性,跟我们没啥大关系,主要在这里进行的添加自定义异常
处理
17 exceptionHandlerResolver.afterPropertiesSet();
18 exceptionResolvers.add(exceptionHandlerResolver);
19
20 ResponseStatusExceptionResolver responseStatusResolver = new
ResponseStatusExceptionResolver();
21
responseStatusResolver.setMessageSource(this.applicationContext);
22 exceptionResolvers.add(responseStatusResolver);
23
24 exceptionResolvers.add(new
DefaultHandlerExceptionResolver());
25 }
org/springframework/web/servlet/config/annotation/
WebMvcConfigurationSupport
剩余13页未读,继续阅读
资源评论
小兔子平安
- 粉丝: 209
- 资源: 1940
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功