Java中Validator Exceptions的最佳方法是什么?

时间:2013-07-30 18:44:50

标签: java validation

我应该为每种验证创建一个专门的例外,对于样本:

public void doSomething(Text text) {
   if (!text.isAlphaNumeric()) throw new NonAlphaNumericException("Text should be alphanumeric");
   if (text.isBlank()) throw new BlankException("Text should not be empty or null");
   ...
}

或者,我应该做一般的例外:

public void doSomething(Text text) {
   if (!text.isAlphaNumeric()) throw new TextValidationException("Text should be alphanumeric");
   if (text.isBlank()) throw new TextValidationException("Text should not be empty or null");
   ...
}

2 个答案:

答案 0 :(得分:3)

如果使用第一种方法,则调用者可以单独处理每个异常:

try
{
    doSomething(new Text("blah blah"));
}
catch(NonAlphaNumericException e){/* do something */}
catch(BlankException e){/* do something else */}

答案 1 :(得分:0)

这取决于您需要对这些例外做些什么。

另一种方法是使用混合方法:您创建一个主要的ExceptionType和一些派生的异常。

通过这种方式,您可以选择要以特定方式提出/管理的异常。其他人可以通过更一般的方式进行管理。

这听起来像是java.lang.Exception和其他子类型之间的区别(例如IOException等......)。