If you have a class that needs to expose some value (either by a Property, or a "getter" function) and there is a chance that getting this value could cause an exception. How do you best expose that value?
I originally had a Property that exposed some value where, if in a certain state, would throw an exception.
Microsoft FxCop recommends.
"Do not explicitly raise exceptions from unexpected
locations. There are some methods, such as Equals and
GetHashCode, which users do not expect to raise exceptions.
Therefore calls to these methods are not commonly
wrapped in try catch blocks."
So if FxCop recommends not raising an exception from a Property's getter, we'll just throw it in a function. Come to find out now FxCop says...
"Properties should be used instead of Get/Set methods
in most situations. Methods are preferable to properties
in the following situations: the operation is a conversion,
is expensive or has an observable side-effect; the
order of execution is important; calling the member
twice in succession creates different results; a member
is static but returns a mutable value; or the member
returns an array."
So, which is the best method?
I went back to the Property method because it really is mimicking the usage of a property...
Any suggestions out there?