returning error string or null for “no errors”

In my code I have several validation methods which have common part. I extracted common part into dedicated method and now code looks like this:

public String validate1() {   String common = validateCommon();   if (common != null) {     return common;   }   // do something   return something1; }  public String validate2() {   String common = validateCommon();   if (common != null) {     return common;   }   // do something   return something2; }   public String validateCommon() {   ... } 

I don’t like how null has special meaning of “no errors occured`. May be I can refactor to something like this:

public String validate1() {   return validateCommon().orElseGet(() -> {      // do something      return something1;   }); }  public Optional<String> validateCommon() {   ... } 

But this doesn’t look beautiful too, because “normal” code is under orElseGet, but error processing is at the beginning of the method, this looks odd.

Can I refactor it to something more readable?