我依赖的代码中有一些不兼容的更改。
所以我想捕获一个 NoSuchMethodException 来记录有关该问题的更多信息
当我使用这个时:
try{
do.something();
}catch(NoSuchMethodException e){
System.out.println("!");
}
我收到此错误“无法访问 NoSuchMethodException 的 catch 块。此异常永远不会从 try 语句主体中抛出”
我也试图捕捉 java.lang.RuntimeException 并检查它是否是 NoSuchMethod 但它没有用。
反射会造成性能延迟,不想用....
有任何想法吗?
最佳答案
您对 NoSuchMethodException 感到困惑,只有在使用反射调用不存在的方法时才会抛出 NoSuchMethodException,而 NoSuchMethodError 可能会在您直接调用方法时抛出,而该方法在编译时存在且在运行时不存在。它通常发生在编译和运行时使用不同版本的外部库时。
底线:捕获 NoSuchMethodError