SpringBoot 異常精準(zhǔn)匹配
2023-08-18 10:49 作者:MicroShuai | 我要投稿
源碼包:org.springframework.web.method.annotation.ExceptionHandlerMethodResolver
1.異常處理方法解決器:發(fā)現(xiàn)@ExceptionHander 方法中給定的類,和它的超類通過給的方法解決 所給類型的異常

2.mappedMethods

初始存放 異常 的容器mappedMethods的數(shù)據(jù)結(jié)構(gòu)為為 HashMap,初始化容量為16,默認(rèn)存放16個(gè)異常

小知識(shí): <Class<??extends Throwable>> ?? 傳入的異常字節(jié)碼類文件必須為繼承Throwable類

3.通過matchaes.sort()?排序 返回集合中的異常類型,sort集合中 調(diào)用了ExceptionDepthComparator()比較器

4.ExceptionDepthComparator比較器比較規(guī)則

讓聲明的異常類型 和 所比較的異常類型比較
使用遞歸 :每一次找 exceptionToMatch的父類 , 并且深度+1 (離最終的異常類越近,深度越大)
如果找到 返回 比較的深度
如果沒找到,則返回Integer類型的最大值
標(biāo)簽:javaspringboot