这个是我的全局异常处理类,以newThirdException(JSON。toJSONString(obj))形式抛出了这个自定义异常,不管从最底层的方法抛出上层不抛,还是从controller的入口开始都抛出,均无法精确匹配。下面分别是自定义异常和全局异常处理类,分析过程在末尾。 springbootstarterparent版本:2。3。12。RELEASE 第一次调用exceptionLookupCache为空,会通过getMappedMethod方法获取后再进行put,exceptionLookupCache是一个MapClasslt;?extendsThrowable,Method 类型的ConcurrentReferenceHashMap结构。 第2步,核心代码逻辑:从mappedMethods中解析自定义异常和自定义异常的处理方法映射集合。mappedMethods是类型为MapClasslt;?extendsThrowable,Method的HashMap结构在服务启动的时候通过init方法加进去。有异常抛出时通过mappedException。isAssignableFrom这个native方法判断mappedMethods的keys,keys就是在全局异常中定义的所有异常类,包括自定义异常。 第3步:。common。basic。exception。ThirdException在通过isAssignableFrom判断时返回了false,所以没有加到matches里面,也就没有机会参加排序,就导致没有匹配到准确的处理方法。 启动的时候mappedMethods里面可以正常加进去,但是isAssignableFrom判断时返回了false,随后调用的时候mappedMethods就为空了,这很正常,因为它就是个reference的ConcurrentHashMap。但导致exceptionLookupCache会加进去一个ThirdExceptionnull的kv,结果就是找不到ThirdException对应的处理方法,进而直接走了ExceptionHandler(valueException。class) 感觉就像是代码问题,有什么解决方案吗?解决了有红包