什么时候检查null?

时间:2011-01-05 00:02:57

标签: java

我应该检查是否需要在构造函数中有效的值传递空值?换句话说,如果我在获取无效值时抛出类,或者我应该让它在它尝试对它执行某些操作之前让它运行,让运行时引发异常?

我想如果传递一个空值是一个错误,我应该在构造函数中对待它?

5 个答案:

答案 0 :(得分:8)

参见this StackOverflow post和关于失败早期原则的说明。如果传递一个空值是一个错误,你肯定应该在构造函数中对它进行处理。

答案 1 :(得分:4)

我愿意。如果拥有非null参数是合同的一部分,那么通过一定的方式通知用户IllegalArgumentException或断言。

我选择“最小惊喜”的方式。

答案 2 :(得分:0)

如果没有错误的话,如果没有错误的话,我会在构造函数的早期捕获它。

如果你能做任何事情,那么等等。

答案 3 :(得分:0)

我一般同意duffymo,但它也取决于你何时需要使用该潜在的空值。如果在构造函数中需要它,那么是的,你应该在那里抛出一个IllegalArgumentException。但是,如果稍后不再需要该值(例如,在另一种方法中),则可以(并且可能应该)将空检查推迟到该点。

答案 4 :(得分:0)

基本规则: 如果你的构造函数不能保证给定参数的稳定和有效状态,则抛出异常!

因此,如果您需要将值设置为!= null以获得有效的对象状态,请立即检查并抛出异常。你什么时候会这样做?