ReflectiveOperationException及其子类ClassNotFoundException、NoSuchMethodException等异常都是非运行时异常。按理说,非运行时异常应该在代码中捕获并予以处理,可是我想不明白捕获这类异常应该如何处理。通常我们找到某个类或方法是为了生成该类的对象或执行该方法,可是找不到的话,程序就不能运行下去了,应该中止了。不知道各位老哥能给个处理ReflectiveOperationException的例子吗?
我为了方便,自己写了几个方法:
Method getMethod(String fullMethodSignature) throws ClassNotFoundException, NoSuchMethodException;
Object invokeMethod(String fullMethodSignature, Object owner, Object... args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException;
至于方法体我就不写了,有经验的程序员应该知道怎么写。
下面是这两个方法执行的例子:
final Method method = getMethod("java.lang.Integer.valueOf(String)");
final Integer value = (Integer) invokeMethod("java.lang.Integer.valueOf(String)", null, "123456789");
方法抛出如此多的异常,我不知道如何捕获它们并在代码中处理。我认为这些异常在运行时是无法处理的,我的解决办法把这些异常放在运行时异常里抛出,不知道各位老哥有没有更好的解决办法?
不处理,往外抛出,完全没有问题。
众多异常信息,可以考虑spring的全局异常处理器进行处理,拦截异常,对异常进行分类处理。(直接转换错误信息响应前端或者记录日志信息)。