为了更具体一些,我想写一个代码,如果给定的值为负,则会抛出IllegalArgumentException
。我应该在setter/constructor中包含这段代码还是应该在调用适当的方法时检查值? (例如:。start()
,init()
,或print()
任何run()
)在Java中的setter中抛出Exception是一个好习惯吗?
我的代码(简化):
public class LLUAlgorithm {
private int temperature;
public int getTemperature() {
return temperature;
}
public void setTemperature(int temperature) {
if (temperature < 0)
throw new IllegalArgumentException("can't be smaller than 0.")
this.temperature = temperature;
}
public void run() {
...
}
我不记得,设定器抛出异常如上述的单一壳体。但我很好奇它是好还是坏。
那么,例外名称包含_illegal argument_,所以当然你可以抛出它,当一个参数是非法的,如负数。是的,这可能发生在一个二传手中,我从来没有听说过,这将是不好的做法(因为它不是)。 – Tom
是的,没关系,你甚至可以尝试更具体的例外...如果为空,如果是无效索引或定义自定义异常 –
您应该抛出IllegalArgumentException。你可以用构建器模式过度使用它。您是否阅读过“Effective Java”一书,其中包含有关构建器模式的材料。 –