当前位置: 首页 > 知识库问答 >
问题:

Java:什么时候跳过对对象的空检查?

何玉韵
2023-03-14

一直放这些空检查真的有意义吗?例如:

if(object == null){
  log.error("...")
  throw new SomeRuntimeException("");
} else{
  object.someMethod();
}

实际上,上面的代码段相当于语句object.somemethod();

如果object的值为null,则在这两种情况下都会引发异常(后者为NullpointerException)。

    null

共有1个答案

双弘益
2023-03-14

在像你这样的情况下,支票没有好处。您将一个RuntimeException替换为另一个RuntimeException,而另一个RuntimeException没有额外的信息或值(对于不熟悉代码的人来说可能会少一点,因为每个人都知道什么是NPE,也不是每个人都知道您的SomeRuntimeException是什么)。

我认为明确检查的主要两次是:

  1. 要抛出选中异常而不是未选中异常时。
  2. 在实际使用引用之前检查空值时。
 类似资料:
  • 修改为的变量必须在声明或执行构造函数时初始化。 我在系统类文件中查找,发现对象是在方法中初始化的,什么时候调用这个方法?

  • 超文本传输协议GET方法的响应如下所示: 在前端,我想检查属性是否为空。我尝试过这种方法,但不起作用

  • 假设我在程序中有一段代码: 有人建议我在调用消息之前检查消息的空值。getUserId()。 检查null有两种方法:第一种: 第二种方式: 我的问题是: 哪种方式对null检查更好?返回还是抛出异常? 为什么我们在这里需要空检查?如果我们不这样做,那么无论如何都会抛出。

  • 这让我很费解。我正在试图理解如何解决Java无法识别我的“settitle”方法存在于第一个“song”之后的问题。这是一个音乐应用程序。它还有另外两个类。我们将非常感谢所有的帮助。 编辑:添加歌曲类。

  • 通常我更喜欢空检查。但是在当前的场景中,我知道大多数时候我的if条件会过去,并且很少有object可能为空的合法场景。 而且,负载很大(大约500万次/小时) 现在我试着从性能的角度去寻找哪种方法更好。在java中已经检查了try/catch vs null check,但我的情况是唯一的。 更新: 胜利者为空支票。在try/catch中,内部JVM将执行null检查并抛出NPE,此外,JVM中的

  • 问题内容: 每当我学习垃圾收集器时,都会听到术语“对象图”。到底是什么意思? 问题答案: 对象具有对其他对象的引用,这些对象又可以具有对更多对象(包括起始对象)的引用。这将创建对象图,在可及性分析中很有用。例如,如果起始对象是可到达的(例如,它在线程的本地堆栈中),则图形中的所有对象都是可到达的,并且确切的垃圾收集器无法收集任何这些对象。同样,如果我们创建所有可到达对象的列表,则从一组活动对象(根