我们有一个数字组合,其中第一个数字确定最后一个数字的格式:
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
}
但这看起来有点难看......解决这种情况的交替/其他想法是什么?是否有典型的模式可供使用?
答案 0 :(得分:2)
嗯,抛出异常的习惯(但有些老式)替代方法是返回错误代码(或错误对象):
ErrorInfo err = checkNumbers(n1, n2, n3);
if (err != null)
{
...
但我个人会特意选择变种。