运维开发网

Java 何时为构造函数抛出异常

运维开发网 https://www.qedev.com 2020-04-22 07:35 出处:网络 作者:运维开发网整理
public Neocortex(Region rootRegion, ConnectionInterface functor) { this.rootRegion = rootRegion; this.currentRegion = this.rootRegion; this.functor = functor; } 嘿上面我有一个类的构造函数.我的问题是我应该在构造函数中添加空指针异常还是不必
public Neocortex(Region rootRegion, ConnectionInterface functor) {
this.rootRegion = rootRegion;
this.currentRegion = this.rootRegion;
this.functor = functor;
}

嘿上面我有一个类的构造函数.我的问题是我应该在构造函数中添加空指针异常还是不必要?老实说,我只是不明白何时应该为我的代码添加例外.但在这种情况下,我应该使用哪个构造函数?

public Neocortex(Region rootRegion, ConnectionInterface functor) {
    if (rootRegion == null) {
    throw new NullPointerException("rootRegion cannot be null");
} else if (functor == null) {
        throw new NullPointerException("functor cannot be null");
    }
this.rootRegion = rootRegion;
this.currentRegion = this.rootRegion;
this.functor = functor;
}
嗯……这是一个品味问题.

如果类的前提条件是必须提供rootRegion,那么保护类实现不需要在整个地方进行空检查是有意义的.

因此,回答“何时应该在构造函数中抛出异常”的问题:我会在所有情况下执行此操作,其中来自使用者的参数使您的实现处于无效状态,委托问题(即抛出异常).

如果你试图将角色作为消费者一段时间,并且你选择不进行空检查,他将拥有如下代码:

Neocortex n = new Neocortex(null,null);
n.doSomeething();

如果他到达第二行,并且这里的实现抛出NullPointerException,那么他将不清楚它是由于他提供的参数.

0

精彩评论

暂无评论...
验证码 换一张
取 消