es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , , ,

Answer

  1. Avatar for 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í:

    public String getFileProperty(String name) {
        try {
            return Optional.ofNullable( this.properties.getProperty(name, null) )
                    .orElse(null);
        } catch (Exception e) {
            return null;
        }
    }
    

    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.

Comments are closed.