从属性Getters中抛出NotSupportedException

时间:2012-01-29 18:39:37

标签: .net notsupportedexception design-guidelines

我听说从属性getter中抛出异常是不合适的,我理解这个理由背后的原因。然而,下面的情况令我感到困惑:想象一下,你正在写一个旨在适应几个不同平台的外观:

public interface IFacade
{
    int SomeProperty { get; set; }
}

现在假设平台XY原生地支持SomeProperty,但该平台Z没有。不应该从平台NotSupportedException的适配器中的getter中抛出Z是告诉用户该平台特定情况下不支持该功能的正确方法吗?

2 个答案:

答案 0 :(得分:1)

既然您知道无法捕获异常(您无法对此进行任何操作,平台不会被支持!),或者如果被捕获则处理,最好退出程序并显示错误消息说不支持当前平台。

异常通常用于可以捕获和处理的地方,或者在发生错误时意外抛出异常。如果您发现程序在平台z上运行的错误,则退出该程序,如果它无法继续。

答案 1 :(得分:1)

只要记录此行为,就没有任何错误。如果您担心处理异常的必要性,可以引入SupportsSomeProperty属性。但是,这可能会破坏界面。