Java – ¿el código siempre lanzará una excepción de puntero nulo cuando no esté presente ninguna propiedad?
He heredado el siguiente código Java, que obtiene el valor de una propiedad
de un archivo de propiedades
:
String personName = this.properties.getFileProperty("person.name");
if (personName != null) {
// hacer algo más
} else {
// hacer algo
}
El comportamiento previsto en el flujo anterior es que personName
se obtendrá del archivo de propiedades o se devolverá null
si no está presente, y se manejará en consecuencia.
Sin embargo, cuando la propiedad no está presente, se genera una excepción en el método getFileProperty()
(mostrado a continuación).
¿Cómo puedo solucionar esto para tener el comportamiento previsto?
getFileProperty():
public String getFileProperty(String name) throws SystemPropertiesException {
return Optional.ofNullable(this.properties.getProperty(name, null))
.orElseThrow(() -> new PropertiesException("¡No se puede obtener la propiedad!"));
}
Nota: el método getProperty()
que se llama en el código anterior es el método java utils getProperty
.
davy.ai
Para solucionar este problema y lograr el comportamiento previsto, podemos modificar el método
getFileProperty()
para manejar la excepción y devolver null en su lugar. El método modificado se vería así:Con esta modificación, si la propiedad no se encuentra, en lugar de lanzar una excepción, el método devolverá null, lo cual se puede manejar adecuadamente en el bloque de código que lo llama.