NotImplementedException()方法

为什么Visual Studio要添加throw new NotImplementedException();而不是直接留空呢。

原因我想有2:
一个是对于那些有返回值的方法,如果什么都不写,会无法通过编译,VS不希望这样;
另一个原因是,NotImplementedException();可以表示真的没有实现这个方法。对于可以预见的调用者,它们可能真的只需要使用接口中的一些方法。因此完全没有必要实现所有的方法。NotImplementedException();保证了不实现某些方法,代码仍然合法,同时对调用的违例给出异常提示。



一个很经典的例子是,比如有一个叫鸟的接口,我们定义了下蛋、吃、飞行三个方法。

当我们实现一个鸵鸟的类的时候,如果非要在飞行中添加点代码,或者胡乱返回点什么,如2楼说的那样,并不是好的设计,因为这会让人产生迷惑。

因此直接在方法体内填入throw new NotImplementedException();是一个合理的设计。

类似地,我们设计一个方法,获得来自传感器的温度,用正数表示零上温度,用负数表示零下温度。一个不好的设计是,当传感器故障没有返回的时候返回0,或者某个值。这会导致调用者的迷惑,到底这是故障还是确实有这么一个温度呢。因此最好表示为异常。

去年的动车事故中,信号机没有正确获得信号,因为雷击导致供电中断了。信号机软件在无法获得信号的时候,会返回之前的信号,而不是报错,最终导致了事故。这说明对软件异常的处理必须非常谨慎。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值