Even if there are 10 properties like you say, if they are required and it doesn't make sense to give them default values I would say put them all in the constructor.
If some of them can have reasonable default values then you can leave them out of the constructor and just set them to their defaults.
If none of the above are viable, for instance the object may need to be constructed before the values for those properties are known, then I would see if it makes sense for the required properties can be passed in as parameters to the method (e.g. it either doesn't have many parameters or isn't likely to be called many times, or if it truly is responding to its own internal state.)
Barring all of the above, an exception should be thrown. Also you mention "Throw exception and expect the user to catch it?" The purpose of throwing the exception shouldn't be because you expect the caller to catch it, you should expect them to make sure the property is set. Catching it should be a last resort when they cannot reasonably make sure the property is set and they don't care if your method fails as a result.