当然你可以抛出异常实际上是我会做的(而不是在构造函数中吞下它).您希望让调用者知道发生了意外情况,您不希望返回未正确初始化的实例.也就是说,这可能表明你在构造函数中做了太多事情.
小智 6
考虑一个构造函数,或者就此而言任何方法,来签订合同.构造函数的契约非常简单 - 你给我(零,一个或多个)参数,我会给你一个构造对象.好的做法是建议这个对象的内部数据结构应该正确初始化并且不变量完好无损,尽管语言中没有任何内容可以强制执行这一点.
如果由于某种原因构造函数无法持有此契约,那么它应该抛出异常.这可能是因为传递的参数(如果有的话)是不可接受的(前置条件失败)或一些外部问题(文件系统已满,堆耗尽,网络中断等)阻止了它.
| 归档时间: |
|
| 查看次数: |
1135 次 |
| 最近记录: |