2016-10-20 94 views
1

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; 
} 

回答

2

一般来说,在构造函数参数验证是不是一个坏实践,它总是取决于你的实际执行。

你的具体情况我建议你如下:

1)如果你想验证在构造函数中的数据,不乱扔NullPointerException,而是IllegalArgumentException;

2)由于您的课程名为EmailSubjectValidator,我不会验证构造函数中的数据。您可以使用构造函数来初始化数据。这将是更好的有validate()方法,这将做到这一点;

3)在很多情况下验证数据是很常见的事情,因此创建一个Validator接口与单个validate()方法进行验证可能是一个好主意;

+0

Validator类是一个非常好的建议。 –

+0

谢谢你的答案 - 你的建议让我问另一个问题,但: – Bobzone

+0

有一个Validator接口,然后是两个其他类更好:EmailSubjectValidator和EmailAttachmentsValidator,或者更确切地说一个接口Validator和一个更普通的类EmailValidator有两个验证方法电子邮件主题和附件分开? – Bobzone

相关问题