在stackoverflow中有这样一句话: The reflection layer wraps any exception in an InvocationTargetException, which lets you tell the difference between an exception actually caused by a failure in the reflection call (maybe your argument list wasn’t valid, for example) and a failure within the method called
翻译一下就是: 反射层将所有的异常都包装在一个InvocationTargetException 中,能使你区分异常的实际上是反射层的引起的一个调用失败(例如参数列表无效)和调用方法内部的错误
问题: 方法被代理类调用后,手动Throw的异常无法被全局异常处理器捕获
此为反射调用方法 如果此方法报错
反射层会将所有异常封装为InvocationTargetException 如果在catch中不作操作 全局异常处理器无法捕获自定义异常
在catch中 加判断 先判断异常是否属于反射异常,如果是,强转后调用getTargetException方法,即可获得被反射方法实际的异常,然后手动return 自定义的错误信息