Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 从属性获取程序引发NotSupportedException_.net_Notsupportedexception_Design Guidelines - Fatal编程技术网

.net 从属性获取程序引发NotSupportedException

.net 从属性获取程序引发NotSupportedException,.net,notsupportedexception,design-guidelines,.net,Notsupportedexception,Design Guidelines,我听说从属性getter抛出异常是不合适的,我理解这一原理背后的原因。然而,以下情况让我感到困惑:想象一下,您正在编写一个facade,以适应几种不同的平台: public interface IFacade { int SomeProperty { get; set; } } 现在假设平台X和Y本机支持SomeProperty,但平台Z不支持。从平台的getterZ适配器中抛出NotSupportedException是否应该是告诉用户该平台的特定情况下不支持该功能的正确方法?因为您

我听说从属性getter抛出异常是不合适的,我理解这一原理背后的原因。然而,以下情况让我感到困惑:想象一下,您正在编写一个facade,以适应几种不同的平台:

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

现在假设平台
X
Y
本机支持
SomeProperty
,但平台
Z
不支持。从平台的getter
Z
适配器中抛出
NotSupportedException
是否应该是告诉用户该平台的特定情况下不支持该功能的正确方法?

因为您知道无法捕获异常(对此您无能为力,平台不受支持!),或者,如果被捕获,最好退出程序并显示一条错误消息,说明当前平台不受支持


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

只要记录了此行为,就没有任何错误。如果您关心处理异常的必要性,则可以引入
SupportsSomeProperty
property。但是,这可能会破坏接口

这很好。鉴于这是一个接口,您需要首先告诉程序员。