Multiple null Checks or try/catch NullPointerException
The problem with catching NullPointerException is “which one did you catch?”  A null can be returned from getGrandParent(), and using that return value without checking will cause the exception.  OR a bug in getGrandParent() might cause an exception while trying to find the parent’s parent, and you are obscuring the bug by assuming the NullPointerException results from a properly returned null value.

You can use Optional to properly capture the null and not call subsequent function. 

Optional&lt;Boolean&gt; isRequired = Optional.ofNullable(context)
                          .map(Context::getGrandParent)
                          .map(GrandParent::getParent)
                          .map(Parent::getChild)
                          .map(Child::isRequired);

if (!isRequired.isPresent()) {
    LOG.error("Unable to determine if processing is required.");
} else if (isRequired.get()) {
    // continue with business logic
}


The Context::, GrandParent::, Parent::, Child:: class types are, of course, WAG's.  You'll need to supply the corrent types based on the type returned by the previous stage.

Alternately, you could use .getOrElse(Boolean.FALSE) at the end of the .map() chain.