Either an assertion (since the caller should have validated) or an exception (ditto) or just ignore the problem. A setter simulates simple assignment to a variable and so is not expected to perform formal validation. Or you can implement a separate setValue:error: method (which can't be used with dot assignment notation) and mark the var read-only in the @property statement.
You should not set the value into the property until after it's been validated by the method calling the "set" method. Any checking in the "set" method is purely for bug detection.