gpt4 book ai didi

java - 何时为构造函数抛出异常

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:28:39 25 4
gpt4 key购买 nike

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,则保护类实现免于在所有地方进行空检查是有意义的。

所以要回答“我什么时候应该在构造函数中抛出异常”这个问题:在所有情况下,如果来自消费者的参数使您的实现处于无效状态,我会这样做,委托(delegate)问题(即抛出异常(exception))。

如果您尝试扮演消费者角色一段时间,并且您选择不进行空检查,他将拥有如下代码:

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

如果他到达第 2 行,并且此处的实现抛出 NullPointerException,他将不清楚这是由于他提供的参数所致。

关于java - 何时为构造函数抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16593612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com