Home > Software design >  Java - code will always throw a Null Pointer Exception when no Property is present?
Java - code will always throw a Null Pointer Exception when no Property is present?

Time:12-31

I have inherited the following java code, that gets the value of a property from a properties file:

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

The intended behavior in the above flow is that personName will either be retrieved from the properties file or will be returned as null if its not there, and handled accordingly.

However when the property is not there an exception is thrown in the getFileProperty() method (shown below).

How can I fix this to have the intended behavior?

getFileProperty():

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

Note - the getProperty() method being called in the code above is java utils getProperty method.

CodePudding user response:

You can use 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 
}

CodePudding user response:

You should wrap your code in a try catch block.

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

Edit: Alternatively provide a defaultValue to .getFileProperty()

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

CodePudding user response:

You should use try catch instead of if else condition. When SystemPropertiesException has been thrown, do your logic if the person.name has not been found.

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
}

  • Related