我应该检查是否需要在构造函数中有效的值传递空值?换句话说,如果我在获取无效值时抛出类,或者我应该让它在它尝试对它执行某些操作之前让它运行,让运行时引发异常?
我想如果传递一个空值是一个错误,我应该在构造函数中对待它?
答案 0 :(得分:8)
参见this StackOverflow post和关于失败早期原则的说明。如果传递一个空值是一个错误,你肯定应该在构造函数中对它进行处理。
答案 1 :(得分:4)
我愿意。如果拥有非null参数是合同的一部分,那么通过一定的方式通知用户IllegalArgumentException或断言。
我选择“最小惊喜”的方式。
答案 2 :(得分:0)
如果没有错误的话,如果没有错误的话,我会在构造函数的早期捕获它。
如果你能做任何事情,那么等等。
答案 3 :(得分:0)
我一般同意duffymo,但它也取决于你何时需要使用该潜在的空值。如果在构造函数中需要它,那么是的,你应该在那里抛出一个IllegalArgumentException。但是,如果稍后不再需要该值(例如,在另一种方法中),则可以(并且可能应该)将空检查推迟到该点。
答案 4 :(得分:0)
基本规则: 如果你的构造函数不能保证给定参数的稳定和有效状态,则抛出异常!
因此,如果您需要将值设置为!= null以获得有效的对象状态,请立即检查并抛出异常。你什么时候会这样做?