I did not quite understand the functionality you implemented, so I don't have a suggestion.
Why an exception? Typical use is to populate model and then validate it when model is fully initialized, links/references resolved etc.