gpt4 book ai didi

java - 在这种情况下可以从构造函数中抛出异常吗?

转载 作者:搜寻专家 更新时间:2023-10-31 19:55:11 25 4
gpt4 key购买 nike

<分区>

在为学校项目开发类(class)(如学校类(class))数据库系统时,我偶然发现了一个有争议的问题。

我有一个名为 Course 的类(class)。这是该类的一个构造函数(另一个是分配默认值的空白构造函数):

public Course(String name, String code, char level, int academicYear)
{
serialNumber = nextSerialNumber++;
if (name == null)
{
throw new NullPointerException("Name can not be null.");
}
else
{
this.name = name;
}
if (code == null)
{
throw new NullPointerException("Code can not be null.");
}
else
{
this.code = code;
}
if (indexOf(level, VALID_LEVEL) == -1)
{
throw new InvalidLevelException("Level must be one of "
+ "characters defined in the public array in Course.");
}
else
{
this.level = level;
}
if (String.valueOf(academicYear).length() != NUMBER_OF_DIGITS_IN_YEAR)
{
throw new InvalidYearException("Year must be a four digit number!");
}
else
{
this.academicYear = academicYear;
}
}

在哪里

InvalidLevelException

InvalidYearException

是自定义异常,是

的子类
RuntimeException

我从该构造函数中抛出异常以指示是否出现任何问题。例如,如果在读取数据文件时遇到错误数据,我可以拒绝它并将其写入日志(如项目要求),只需将该构造函数放入 try-catch block 中,然后捕获这些异常,并在该 catch block 内记录错误数据。

把这段代码拿给我的老师看后,他说从构造函数中抛出异常是不合适的。但是,我阅读了许多鼓励这种做法的 Stackoverflow 帖子。

我的问题是:可以从上面的构造函数中抛出异常吗?

非常感谢附上答案的可靠来源(例如,官方文件或权威书籍)。

非常感谢。

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