2016-10-20 6 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ません。あなたのクラスがEmailSubjectValidator命名されたよう

2)、私はコンストラクタでデータを検証しません。代わりにコンストラクタを使用してデータを初期化することができます。これを行うには、validate()メソッドを持つ方がはるかに良いでしょう。

3)多くの場合、データを検証することは一般的なことです。したがって、validate()の検証方法を使用してValidatorインターフェイスを作成することをお勧めします。

+0

Validatorクラスは本当に良い提案です。 –

+0

は答えをありがとう - あなたの提案は、私はしかし、別の質問を行います。EmailSubjectValidatorとEmailAttachmentsValidatorというか1つのインターフェース検証し、検証の二つの方法で1以上の一般的なクラスEmailValidator: – Bobzone

+0

は、それがバリインターフェイスと2つの他のクラスを持っている方が良いです電子メールの件名と添付ファイルは別々に? – Bobzone

関連する問題