What about just agreeing that property getters should not throw? C# for example has similar code-defined properties, but the agreed and recommended practice is that property getters should never throw.