If you can you could try to move setter to constructor of the base class and make setter private. Or as Jon suggested create abstract base class / interface with getters that are supported in all implementations.
This would avoid the whole situation with throwing exception.