仅在第一次而不是第二次捕获到异常

时间:2019-12-25 16:05:43

标签: java exception try-catch

在简单的Java程序中实现自定义异常。 第一次,我提供了无效的输入,该自定义异常会按预期抛出,但是当我第二次尝试执行此操作时,该应用程序将停止。为什么?

    try {
        int option = getQuote.ask("Enter the options");
        switch (option) {
        case 1:
            System.out.println("Current balance is " + user.getAccountBalance() + TvConstants.RS);
            break;
        case 2:
            optionService.addRecharge(user, getQuote);
            break;

        case 10:
            System.exit(1);
        default:
            throw new InvalidInputException("", CON.ST001, CON.ST001MESSAGE);
        }
    } catch (InputMismatchException e) {
        throw new InvalidInputException("", CON.ST001, CON.ST001MESSAGE + "");
    } catch (InvalidInputException e) {
        System.out.println(e.getErrorCode() + ":" + e.getErrorMessage());
    }

主要方法:

    public static void main(String[] args) {
            Service service = new Service();
    try {
        service.mainMenu(user, new InputAsker(System.in, System.out), false);
    } catch (InvalidInputException e) {
        System.out.println(e.getErrorCode() + ":" + e.getErrorMessage());
        service.mainMenu(user, new GetQuote(System.in, System.out), false);
    }

}

控制台:

Enter the options
2
Enter the amount to recharge: 
as
ST001:Invalid Input- Please select numeric value.
********************
Enter the options
2
Enter the amount to recharge: 
as
Exception in thread "main" com.exceptions.InvalidInputException: 

我要去哪里错了?

1 个答案:

答案 0 :(得分:0)

为了在主要方法中捕获InvalidInputException,您需要将其放入服务中。

 } catch (InputMismatchException e) {
    throw new InvalidInputException("", CON.ST001, CON.ST001MESSAGE + "");
} catch (InvalidInputException e) {
    System.out.println(e.getErrorCode() + ":" + e.getErrorMessage());
}

从此处删除第二个捕获块。