我需要一些帮助来弄清楚我应该对这个问题做些什么。我创建了一个带有一个名为“procedure”的方法的类,它处理服务器和客户端之间的通信(也向服务器发送一些命令,然后返回一些东西)。
我可以在此处看到此方法的代码:
这种方法“程序”经历了一些步骤。如果我得到一个错误让我们说步骤nr。 4,我应该告诉我的程序再次运行第2步或第3步。 (如果可能,请回到行中)
使用步骤,我的意思是这些行之间的所有内容: 因此,步骤1是验证操作员和询问操作员之间的代码项目编号。
// Verify operator // <--- step 1
// Ask operator for item number <--- step 2
// Search for item name and sends it back. <--- step 3
// Ask operator to confirm name <--- stop 4
and so on:
那么有一种简单的方法吗?如果收到错误,它应该返回几步,但不是从头开始。
现在,我能想到的唯一解决方案是制作每个步骤的方法,如果我收到错误就运行必要的步骤方法。
答案 0 :(得分:0)
您可以将代码包装在:
boolean finished = false;
while (!finished) {
try {
// your repeating code here
} finally {
finished = true;
}
}
但是你可能想要一个“catch”块,它可以分离出也应该导致循环终止的异常。
总的来说,你最好将代码分解为几个方法,每个方法都有一个相当小的功能。这将使您的代码更容易理解和调试。关于构造代码的好书是Andrew Hunt和David Thomas的“实用程序员”。
答案 1 :(得分:0)
我会建议3件事
向您的班级添加属性以管理此状态。
class MyClass {
public static int CODE;
MyClass(int i){
CODE = i;
}
}
public void executeMe(MyClass o){
try {
switch(o.CODE){
case 1:
//call task_1()
break;
case 2:
//call task_2()
break;
case 3:
//call task_2 and task_3()
break;
default:
//default
}
}catch(MyException ee) {
//change o.CODE value based on exception types and call
//executeMe again
o.CODE = 1;
executeMe(o);
}
}
如果您的任务流很简单,您可以删除中断并让它处理。