微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

什么是NoSuchMethod错误,如何解决?

如何解决什么是NoSuchMethod错误,如何解决?

我有一些代码,运行时会产生错误,说:

NoSuchMethod:方法“ XYZ”在null上被调用

这是什么意思,我该如何解决

解决方法

为什么会出现此错误?

示例

作为现实世界的比较,这次对话刚刚发生:

嘿,汽车的油箱里还剩多少汽油?

您在说什么,我们 没有 一辆车。

这就是程序中正在发生的事情。您想调用类似_car.getGasLevel();的函数,但是没有汽车,变量_carnull

很明显,在您的程序中它可能不是汽车。可能是列表,字符串或其他任何东西。

技术说明

您正在尝试使用null变量。您已经将它明确设置为null,或者根本就没有设置,默认值为null

就像任何变量一样,它可以传递给其他函数。您得到错误的地方可能不是来源。您将必须遵循从实际的null值到最初的值的线索,以找出问题所在和解决方案。

null可能具有不同的含义:未设置为另一个值的变量将为null,但是有时程序员有意使用空值来表示没有值。数据库具有可空字段,JSON缺少值。丢失的信息确实确实可能是 信息本身。例如,当用户说“是”时,变量bool userWantsPizzaForDinner;可用于true;当用户拒绝时,变量false可用于null;当用户尚未选择时,变量可能仍为null的东西。这不是一个错误,它是有意使用的,需要相应地进行处理。

我该如何解决?

找到它

使用错误消息附带的堆栈跟踪信息来准确找出错误所在的行。然后在该行上设置一个断点。当程序到达断点时,检查变量的所有值。其中之一是null,找出哪个。

修复

一旦您知道它是哪个变量,请找出它最终是null的原因。它从哪里来的?该值是否从未设置过?值是另一个变量吗? 那个变量如何获得其价值。这就像一条面包屑,您可以遵循,直到发现某个变量从未设置过,或者您发现某个变量被故意设置为if为止。如果不是故意的,请修复它。将其设置为所需的值。如果是故意的,那么您需要在程序中进一步处理它。也许您需要另一个null来为这种情况做一些特殊的事情。如有疑问,您可以询问故意将其设置为$repository->createQueryBuilder()的人。

,

只是您尝试调用的变量未定义或为空

someClass.xyz();

这里的 xyz()null 也没有在 someClass 类中定义

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。