Yes, validity is not an absolute criterion which is always self-evident.
I suppose I had in mind the usual assignment pattern
SomeObject.SomeProperty := SomeValidValue;
which surprises when it leads to an exception.
It is clearly an issue which other LCL maintainers have come across, without always having a solution to satisfy everyone.
For instance, in ExtCtrls we see beside the declaration of TNotebook:
property ActivePage: String read GetActivePage;// write SetActivePage; // should not be published because the read can raise an exception
property ActivePageComponent: TPage read GetActivePageComponent;// write SetActivePage; // should not be published because the read can raise an exception
An unrelated question about TTaskDialog:
Why is its ModalResult property not read-only?
Surely whatever value you assign to it is lost?