用于返回特定错误信息或成功验证对象的模式

时间:2011-12-14 15:32:42

标签: java design-patterns error-handling

我们有一个数字组合,其中第一个数字确定最后一个数字的格式:

0001/0001/AF001 -> 0001/0001 == Rule for third number: two characters, three digits
0002/0001/0001 -> 0002/0001 == Rule for third number: four digits

我们需要在将这些数字存储到数据库之前对其进行验证。由于这是我们的一些项目中的常见问题,因此我们希望在中央服务中进行验证(在本例中为ejb)。

我的第一个想法是使用如下方法:

public boolean isValid(String number1, String number2, String number3);

但是如果某些内容无效,我们希望转发规则,以便用户可以看到出错的地方,所以我的下一个想法是:

public void checkNumbers(String number1, String number2, String number3) throws DetailsException;

所以可以这样调用:

try {
  checkNumbers("0001", "0001", "AF002");
} catch(DetailsException d) {
  // error handling
}

但这看起来有点难看......解决这种情况的交替/其他想法是什么?是否有典型的模式可供使用?

1 个答案:

答案 0 :(得分:2)

嗯,抛出异常的习惯(但有些老式)替代方法是返回错误代码(或错误对象):

ErrorInfo err = checkNumbers(n1, n2, n3);
if (err != null)
{
    ...

但我个人会特意选择变种。