在简单的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:
我要去哪里错了?
答案 0 :(得分:0)
为了在主要方法中捕获InvalidInputException
,您需要将其放入服务中。
} catch (InputMismatchException e) {
throw new InvalidInputException("", CON.ST001, CON.ST001MESSAGE + "");
} catch (InvalidInputException e) {
System.out.println(e.getErrorCode() + ":" + e.getErrorMessage());
}
从此处删除第二个捕获块。