Java:吞咽异常后如何调用上一个方法
我正在编写一些Java代码,如果发现异常,我想返回到前面的方法 以下是我的代码的简化版本:Java:吞咽异常后如何调用上一个方法,java,exception,abstraction,strategy-pattern,Java,Exception,Abstraction,Strategy Pattern,我正在编写一些Java代码,如果发现异常,我想返回到前面的方法 以下是我的代码的简化版本: public class classA { public static void main(String[] args) { int number1 = askUserForFavoriteSum(); int number2 = askUserForAnotherNumber(); } public static int askUserForFavo
public class classA
{
public static void main(String[] args)
{
int number1 = askUserForFavoriteSum();
int number2 = askUserForAnotherNumber();
}
public static int askUserForFavoriteSum()
{
int firstFavorite;
int secondFavorite;
int favoriteSum
System.out.println("What is your first favorite number?");
firstFavorite = classB.getIntFromConsole();
System.out.println("What is your second favorite number?");
secondFavorite = classB.getIntFromConsole();
favoriteSum = firstFavorite + secondFavorite;
return favoriteSum;
}
public static int askUserForAnotherNumber()
{
int number;
System.out.println("What is another number?");
number = classB.getIntFromConsole();
return number;
}
}
例如,鉴于上述两个类,我希望发生以下情况:
public static int getIntFromConsole()
{
Scanner scanner = new Scanner(System.in)
int value;
while (true) {
try
{
value = Integer.valueOf(scanner.nextLine());
break;
}
catch (NumberFormatException e)
{
System.out.println("ERROR: Invalid input! Please enter a whole number.");
}
}
return value;
}
把它改成循环
public static int getIntFromConsole()
{
Scanner scanner = new Scanner(System.in)
int value;
while (true) {
try
{
value = Integer.valueOf(scanner.nextLine());
break;
}
catch (NumberFormatException e)
{
System.out.println("ERROR: Invalid input! Please enter a whole number.");
}
}
return value;
}
使用while循环(即
while(无效){askForIt}
)您可以使getIntFromConsole
进一步抛出NumberFormatException
(可能将其包装成更合适的Exception
),在main
中捕获它,然后重试(例如使用循环)。使用while循环(即while(无效){askForIt}
)您可以使getIntFromConsole
进一步抛出NumberFormatException
(可能将其包装成更合适的异常
),在main
中捕获它,然后重试(例如使用循环)。从逻辑上讲,这种方法似乎很合理。。。让我在我的实际代码中尝试一下(不是我在问题中包含的愚蠢示例),看看效果如何。如果有效的话,我会接受这个答案。不管怎样,谢谢你的解决方案。我是KISS的坚定支持者。从逻辑上讲,这种方法似乎是合理的。。。让我在我的实际代码中尝试一下(不是我在问题中包含的愚蠢示例),看看效果如何。如果有效的话,我会接受这个答案。不管怎样,谢谢你的解决方案。我强烈支持亲吻