鉴于我expose公共API中的Lazy<T>
。如果延迟初始化可能会抛出exogenous exception,我应该避免这样的设计吗?
访问Value
属性时会抛出异常。并且property getters should not throw exceptions。另一方面,Lazy<T>
在将初始化异常传递给Value
属性getter的区域中精心设计并有详细记录。
答案 0 :(得分:0)
在这种情况下,最好公开一个方法,并让懒惰成为实现细节。
出于与属性设计指南中所述相同的原因,请不要使用延迟初始化来实现公共属性,以免引发异常。