将用户返回到发生异常的代码行 - Java

时间:2015-02-26 00:00:31

标签: java exception

当发生异常时,我想将用户返回到它所在的代码行,而不是让他们再次输入所有内容。有一个简单/简单的方法来做到这一点?

    Scanner input = new Scanner(System.in);
    double initialAmount = 0.0;
    String type = "";
    double interestRate = 0.0;
    boolean finished = false;

    try{
        System.out.print("\nInitial Amount: ");
        input = new Scanner(System.in);
        initialAmount = input.nextDouble();

        System.out.print("Compound/Simple: ");
        input = new Scanner(System.in);
        type = input.nextLine();

        if (!type.equalsIgnoreCase("compound") && !type.equalsIgnoreCase("simple")){ 
            System.out.println(type);
            throw new IllegalArgumentException();
        }

        System.out.print("Interest Rate: ");
        input = new Scanner(System.in);
        interestRate = input.nextDouble();

        finished = true;
    }
    catch(Exception e) {
        System.out.print("\n----- Please check that you have entered a corrrect value! -----\n");
        createUserInvestment(); 
    }
    Investment invest = new Investment(interestRate, initialAmount, type);
    return invest;

2 个答案:

答案 0 :(得分:1)

您似乎正在尝试验证输入,只是循环直到用户提供有效值。更好的是不要抛出异常,因为这是一个错误指示,你不能回到完全相同的行,程序是一个流...在循环中获取输入,检查是否有效,打破循环有效时。

答案 1 :(得分:1)

没有必要在代码中抛出任何异常。需要try / catch的唯一代码是nextDouble()赋值。这可能会导致错误,因为输入并不总是双倍,但分配字符串更容易,并且不需要捕获。要返回到该行,请在while循环中围绕要重复的行。在循环中,使用if语句检查输入。获得所需的输入后,使用break关键字结束循环。这将继续分配变量,直到它被分配到您想要的变量。 警惕不必要地使用例外。例外是对象,因此内存更昂贵。因此,如果您无法使用程序的逻辑处理错误,请仅使用例外。我并不是说你不应该使用异常,只是你应该只在if语句无法处理错误的场景中使用它们。