我依赖的代码中有一些不兼容的更改。
所以我想捕获一个 NoSuchMethodException 来记录有关该问题的更多信息

当我使用这个时:

try{
     do.something();
}catch(NoSuchMethodException e){
     System.out.println("!");
}

我收到此错误“无法访问 NoSuchMethodException 的 catch 块。此异常永远不会从 try 语句主体中抛出”

我也试图捕捉 java.lang.RuntimeException 并检查它是否是 NoSuchMethod 但它没有用。

反射会造成性能延迟,不想用....

有任何想法吗?

最佳答案

您对 NoSuchMethodException 感到困惑,只有在使用反射调用不存在的方法时才会抛出 NoSuchMethodException,而 NoSuchMethodError 可能会在您直接调用方法时抛出,而该方法在编译时存在且在运行时不存在。它通常发生在编译和运行时使用不同版本的外部库时。

底线:捕获 NoSuchMethodError

10-08 11:00