Java >> Java tutorial >  >> Tag >> throw

Kædning valgfri.ellerElseThrow

Det kunne implementeres direkte i den samme kæde, du ville få andre undtagelser. Nu er den selvfølgelig mindre læsbar end din første løsning, så du har en afvejning.

return getObject().map(obj -> Optional.ofNullable(obj.getNullableField())
                                      .orElseThrow(() -> new IllegalStateException("Field is not present")))
                  .orElseThrow(() -> new IllegalStateException("Object not found!"));

I stedet for at indlejre, vil jeg foreslå en simpel sekvens for at løse det som:

var value = getObject()
        .orElseThrow(() -> new IllegalStateException("Object not found!"));

return Optional.of(value) // ensured value check already
        .map(CustomObject::getNullableField) // takes care ofNullable
        .orElseThrow(() -> new IllegalStateException("Field is not present"));

Java tag