NoSuchMethodException和NoSuchMethodError的区别

2019-03-25 13:33|来源: 网路

各位帮忙说说这两者的区别。我先简单说说,就当抛砖引玉了。
NoSuchMethodException继承自Exception
NoSuchMethodError继承自Error 一般有兼容性问题时会抛出该异常

问题补充:
Wind_ZhongGang 写道
就好像Exception和Error的区别一样,Exception作为异常可以不导致系统中止,而Error作为错误则会直接导致系统中止运行。


但是如果我用catch(Throwable t){}捕获了Error,是不是也可以不导致系统终止运行。
另外,出现这两种异常或错误后,都是无法执行当前的操作,那么分别在什么时候抛出这两种。

问题补充:
chen_yongkai 写道
public class NoSuchMethodErrorextends IncompatibleClassChangeError当应用程序试图调用类(静态或实例)的指定方法,而该类已不再具有该方法的定义时,抛出该异常。

通常由编译器捕获该错误;仅当类定义发生不相容的更改时,在运行时才会发生该错误。


public class NoSuchMethodExceptionextends Exception无法找到某一特定方法时,抛出该异常。


以上来自JDK文档,其实这个没啥可讨论的



jdk文档我看过,能否举个简单的例子,如果调用不存在的方法,通常会有编译错误。但是,这些往往都是在运行的时候抛出的。

相关问答

更多
  • 我找到了解决方案。 这是因为ant / JAVA_HOME路径。 所以我删除了所有java和ant路径并重新创建它们。 现在它的工作量很大。 Thkns I found solution on this. It was happened because of ant/JAVA_HOME paths. SO I removed all java and ant paths and recreate them. Now its working greatly. Thkns
  • 您对NoSuchMethodException感到困惑,只有在调用不存在的方法时才会使用反射和NoSuchMethodError引发NoSuchMethodException,这种方法在编译时存在并且在运行时不存在时直接调用方法时可能会引发。 它通常发生在编译和运行时使用不同版本的外部库。 底线:捕获NoSuchMethodError You was confusing with NoSuchMethodException that is thrown only when invoking method t ...
  • 该错误与您的RecyclerView未显示的事实无关。 我希望别人知道它是什么。 我建议你在另一个文件中拆分适配器,所以你会得到这样的东西: 活动 public class PlayerActivity extends AppCompatActivity { ArrayList playerNames = new ArrayList(); Button send; PlayerAdapter adapter; RecyclerView pla ...
  • 问题是您正在使用不兼容的库组合。 org.drools.commons.jci.compilers.EclipseJavaCompiler类尝试使用org.eclipse.jdt.internal.compiler.CompilationResult.getProblems()[Lorg/eclipse/jdt/core/compiler/CategorizedProblem但该方法不会存在于您正在使用的Eclsipe库中。 The problem is that you are using an inco ...
  • TaggedWritable类没有空构造函数,因此在应该读取序列化数据的reduce阶段,app会因为无法通过反射创建TaggedWritable键入键而TaggedWritable 。 您应该添加一个空构造函数。 您的地图阶段已成功完成,因为在地图阶段,您的映射器会TaggedWritable创建TaggedWritable类型的键。 This code solves the problem and gives the expected result. It is from here, public st ...
  • 终于要解决它。 最重要的是JNLP语法不正确,因此引发了我的“NoSuchMethodException”,因为它没有读取整个参数并陷入它们之间。 所以,作为一个解决方案,我必须做的是完全重建我的JNLP并重新设置参数,因此它的工作。 感谢所有花了一些时间阅读所有内容的人! Finally got to solve it. The big deal was the JNLP syntax wasn't correct, therefore induced me to a "NoSuchMethodExcep ...
  • 在尝试了字面意思之后我自己解决了。 事实证明, Integer.class != int应该是 Class[] cArg = new Class[3]; cArg[0] = int.class; cArg[1] = String.class; cArg[2] = String[].class; I solved it myself, after trying literally everything. ...
  • 看起来你的GruposAdapter.ViewHolder缺少必需的构造函数。 请参阅https://github.com/firebase/FirebaseUI-Android/issues/46#issuecomment-167373575 。 从那里: 这可能有两个原因: 确保你的TaskViewHolder类是公共的*如果你的TaskViewHolder是你的活动的内部类,请确保它是静态的 很可能 public static TaskViewHolder extends RecyclerView.V ...
  • 如果你看一下java文档,你会发现优先级队列没有这样的构造函数: https://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html 您还需要指定初始容量,即 private PriorityQueue turnqueue = new PriorityQueue(5, new TurnComparator()); 更新:值得注意的是,这可以在Java 8中运行 - 它们添加了额外的构造函数。 ...