假设我有一个带有文本界面的游戏。现在,当开始游戏时,玩家需要告诉游戏他们的年龄。
public void getAge() {
System.out.println("Please enter your age");
int age;
try {
Scanner sc = new Scanner(System.in);
age = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("You made a mistake. Let's start this over!");
getAge();
}
gameLoop(age);
}
假设用户犯了 100 个错误,并且该方法被一遍又一遍地调用。这 100 个调用是否保留在调用堆栈中?有什么方法可以删除它们,也许通过返回一个值来代替?
这是内存泄漏吗(虽然很小)?
无论如何,我想听听您对如何改进这一点的想法。
最佳答案
尝试循环(只是伪代码)
bool done = false;
while (!done)
{
try {
// Get the age
if (valid) { done = true; }
}
catch { // ...
// Handle the exception make sure done is still false
}
} // End while
关于java - 从堆栈中删除方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49289805/