欢迎光临散文网 会员登陆 & 注册

SpringBoot 异常精准匹配

2023-08-18 10:49 作者:MicroShuai  | 我要投稿

源码包:org.springframework.web.method.annotation.ExceptionHandlerMethodResolver

1.异常处理方法解决器:发现@ExceptionHander 方法中给定的类,和它的超类通过给的方法解决 所给类型的异常

2.mappedMethods

初始存放 异常 的容器mappedMethods的数据结构为为 HashMap,初始化容量为16,默认存放16个异常

小知识: <Class<? extends Throwable>>    传入的异常字节码类文件必须为继承Throwable类

3.通过matchaes.sort() 排序 返回集合中的异常类型,sort集合中 调用了ExceptionDepthComparator()比较器

4.ExceptionDepthComparator比较器比较规则

  1. 让声明的异常类型 和 所比较的异常类型比较

  2. 使用递归 :每一次找 exceptionToMatch的父类 , 并且深度+1 (离最终的异常类越近,深度越大)

  3. 如果找到 返回 比较的深度

  4. 如果没找到,则返回Integer类型的最大值



SpringBoot 异常精准匹配的评论 (共 条)

分享到微博请遵守国家法律