要求:如果有任何例外,请调用重新验证数据的方法
我的实施:
private void one() {
try {
//Valid data
}catch(Exception e) {
two();
}
}
private void two() {
//Process data with another input
//On entry,
one();
}
我意识到我的用法不正确。我应该怎么处理这个?
答案 0 :(得分:5)
您可以使用递归完全按照建议的方式执行此操作。我不知道问题是什么。就个人而言,使用循环通常比使用递归更简单。然而,我不会只捕获所有异常。您可能希望以不同方式处理不同的异常。
private void one() {
while(true) {
try {
//Valid data
break;
}catch(InvalidArgumentException e) { // or what ever you expect.
two();
}
}
}
private void two() {
//Process data with another input
//On entry,
}
甚至
private void one() {
while(true) {
try {
//Valid data
break;
} catch(InvalidArgumentException e) { // or what ever you expect.
// Process data with another input
// On entry,
}
}
}
答案 1 :(得分:1)
更好的方法是,
在方法one()
中使用数据之前,在其他地方检查while循环中的数据,
虽然它无效但在有效之前一直纠正,而不是将其交给one()
。
在您提出问题之后
将您的error
变量设为类级别,并将其重置为方法two()
,如下所示,
private void two() {
this.error = false;
//Process data with another input
//On entry,
one();
}
祝你好运!
答案 2 :(得分:0)
您在代码中显示的用法是正确的 - 是什么让您认为这不正确?
但是,我看到你正在回忆我在评论中的原始方法 -