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

当不存在属性时,Java代码总是抛出空指针异常?

谷梁子濯
2023-03-14

我继承了以下java代码,它从属性文件获取属性的值:

    String personName = this.properties.getFilePropertty("person.name");
    if (personName != null) {
       // do something else
    } else {
        // do something
    }

上述流程中的预期行为是,personName将从属性文件中检索,或者如果不在属性文件中,则返回为null,并进行相应的处理。

但是,当属性不存在时,将在getFileProperty()方法中引发异常(如下所示)。

如何修复此问题以达到预期的行为?

getFileProperty():

            public String getFileProperty(String name) throws SystemPropertiesException {
            
            return Optional.ofNullable( this.properties.getProperty(name, null) )
            .orElseThrow(()->new PropertiesException("Can not get property!"));
            
             }

注意-上面代码中调用的getProperty()方法是java utils getProperty方法。


共有3个答案

汝繁
2023-03-14

您应该使用try catch而不是if else条件。当抛出SystemPropertiesException时,如果该人被拒绝,请执行您的逻辑。找不到名称。

try {
    String personName = this.properties.getFileProperty("person.name");
    //do something assuming the person.name has been retrieved.
} catch(SystemPropertiesException e)  {
    //do something if the person.name was not found
}
单于耘豪
2023-03-14

你可以用try-catch

try{
    String personName = this.properties.getFilePropertty("person.name");
    //if it's not null there will be no exception so you can directly use the personName 
    
}catch(SystemPropertiesException ex){
    //else there is an exception to handle here 
}
储臻
2023-03-14

您应该将代码包装在try-catch块中。

try {
    String personName = this.properties.getFileProperty("person.name");
    // do something else
} catch (PropertiesException exception) {
    // do something
}

编辑:或者提供一个defaultValue到. getFileProperty()

String personName = this.properties.getFilePropertty("person.name", "NO_VALUE_FOUND");
if (!personName.equals("NO_VALUE_FOUND")) {
    // do something else
} else {
    // do something
}
 类似资料:
  • 问题内容: 我正在android中做一个应用程序,因此我需要访问com.android.internal.telephony API。现在,我可以访问这些API了,但问题是,无论我在自己的类中调用Class Call.java方法的什么地方,都会抛出。您可以在http://hi- android.info/src/com/android/internal/telephony/Call.java.h

  • 我对spring boot和JPA相当陌生。我正在做我的学习目的的小项目。 实体类 有线索吗?

  • 我遇到了这样一个问题,如果组合的一个属性为null(请注意,它不是ID),Javers会抛出一个异常: 或

  • 首先,下面的代码片段是Google云项目应用程序的一部分,在我的本地客户机Raspberry Pi 1上运行。为了能够从连接到Pi的传感器向云发送数据,需要授权。所有需要的客户端机密都存储在src/main/resources中的“client_secrets.json”中。 项目层次结构 当试图使用客户端机密来授权时,下面的代码抛出一个NullPointerException。它是类“CmdLi

  • 我有一个com。谷歌。云存储Blob对象。我可以在java代码中下载和上传这个对象,但我想在启动进程之前检查一下是否存在某些东西。简而言之,这里是我的代码中给我带来问题的部分。 Eclipse似乎无法在IDE中捕获它。示例似乎也遵循此布局。有人知道发生了什么事吗? 我正在Linux环境机器上运行。(它在云功能方面也失败了)。我正在使用Java 11运行时。

  • 问题内容: 最近,我的一位同事编写了一些代码,以捕获整个方法周围的空指针异常,并返回单个结果。我指出了空指针可能有多种原因,因此我们将其更改为对一个结果的防御性检查。 但是,捕获NullPointerException对我来说似乎是错误的。在我看来,空指针异常是错误代码的结果,而不是系统中预期的异常。 在任何情况下捕获空指针异常都有意义吗? 问题答案: 是的,捕获任何东西几乎总是一种代码气味。该C