0

我是否应该为每种验证创建一个专门的异常,例如:

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");
   ...
}
4

2 回答 2

3

如果您使用第一种方法,那么调用者可以分别处理每个异常:

try
{
    doSomething(new Text("blah blah"));
}
catch(NonAlphaNumericException e){/* do something */}
catch(BlankException e){/* do something else */}
于 2013-07-30T18:46:37.960 回答
0

这取决于您需要如何处理这些异常。

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

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

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

于 2013-07-30T19:01:19.037 回答