验证构造函数中的数据并抛出异常

时间:2016-10-20 16:57:08

标签: java

SO社区。

我有一小段代码,我不确定它是不是充满了不良做法。 基本上我试图验证的电子邮件信息包含我以后感兴趣的一些数据。

我想问一下,如果在构造函数中验证传递的参数并在之后抛出某种异常是不错的做法。

你将如何处理这个?

谢谢你, 鲍勃。

public EmailSubjectValidator(EmailConfig emailConfig, Message msg) {
    this.emailConfig = emailConfig;
    if (msg == null || msg.isExpunged()) {
        throw new NullPointerException("Error: EmailSubjectValidator found a message that is either null or was already removed from the server. ");
    }
    this.msg = msg;
}

1 个答案:

答案 0 :(得分:2)

通常,在构造函数中验证参数是并非坏的实践,它总是取决于您实际实现的内容。

在您的特定情况下,我建议您使用以下内容:

1)如果要在构造函数中验证数据,请不要抛出NullPointerException,而是IllegalArgumentException;

2)由于您的类名为EmailSubjectValidator,因此我不会在构造函数中验证数据。您可以使用构造函数来初始化数据。使用validate()方法会做得更好;

3)在很多情况下验证数据是常见的事情,因此最好使用单Validator方法创建validate()接口进行验证;