例如,如果构造函数内部发生错误(例如,传入的参数无效),并且我想停止正在创建的对象,则可以返回null而不是对新对象的引用.(我知道在这种情况下,术语返回在技术上是正确的,但你知道我的意思).基本上,是否可以取消对象创建?
请指导我摆脱这个问题......
如果传入的参数无效,则应抛出IllegalArgumentException
带有描述性消息的参数.NullPointerException
如果是非法null
值,应该抛出.
这是一个BigCar
要求其引擎大于4000 CC 的类的示例.
public class BigCar {
private final Engine engine;
public BigCar(Engine engine) {
if (engine == null)
throw new NullPointerException("Must provide an engine to our car");
if (engine.getCC() <= 4000)
throw new IllegalArgumentException(
"Engine should be bigger than 4000 CC");
this.engine = engine;
}
public static void main(String... args) {
// Size of engine is 2000CC
Engine engine = new Engine(2000);
BigCar myBigCar = new BigCar(engine); // Exception; Engine should be
// bigger than 4000 CC
}
}
Run Code Online (Sandbox Code Playgroud)