NoSuchMethodError和NoSuchMethodException 区别

NoSuchMethodException继承自Exception; NoSuchMethodError继承自Error,通常有兼容性问题时会抛出该异常;程序员

前者是普通的A.b()形式调用,在极其特殊的状况下,发现A类里面没有b方法时抛出,通常状况下这种错误是不会存在的,连编译前的检查都无法经过。可是可能在某些极端状况下出现,好比字节码在内存中被改了。 后者我估计是在反射的时候,依据传入的方法名寻找方法时没找到。 Error表明的是没法恢复的错误,必须由jvm处理或者终止,而Exception是能够恢复的异常,程序员能够自行捕获。jvm

NoSuchMethodError:当应用程序试图调用类(静态或实例)的指定方法,而该类已再也不具备该方法的定义时,抛出该异常。一般由编译器捕获该错误;仅当类定义发生不相容的更改时,在运行时才会发生该错误。继承

NoSuchMethodException:没法找到某一特定方法时,抛出该异常。内存

相关文章
相关标签/搜索