java - switch block try/catch 异常

标签 java switch-statement

我有一个switch具有 5 个整数选项和一条默认消息的语句。我试图让它工作,以便如果选择了除选择数字之外的任何内容,则会显示“无效输入”消息。它目前适用于数字,但如果输入其他任何内容,我会收到以下异常:

Exception in thread "main" java.util.InputMismatchException

我尝试添加 try/catch 语句,但似乎不起作用;我不断收到相同的错误消息。

public static void main(String[] args) throws IOException {
    int menuItem = -1;
    while (menuItem != 0) {
        menuItem = menu();
        try {
            switch (menuItem) {
                case 1:
                    showTaskList();
                    break;
                case 2:
                    addTask();
                    break;
                case 3:
                    sortList();
                    break;
                case 4:
                    deleteTasks();
                    break;
                case 0:
                    break;
                default:
                    System.out.println("Invalid Input");
                    break;
            }
        }
        catch (java.util.InputMismatchException err) {
            System.out.println("\nINVALID INPUT!");
        }
    }
}

最佳答案

如果您的程序以 java.util.InputMismatchException 终止,则表明该异常不是从您提供的 try block 中引发的。因为该异常与以意外形式输入的输入相关,并且因为显然已经在方法 menu() 中尝试将输入转换为数字已执行 ,在进入 try block 之前,似乎可以合理地推断异常是从方法 menu() 引发的。伴随异常的堆栈跟踪会直接告诉您这一点,并且比我从您提供的内容中得到的信息更准确。

根据任务的性质和您收到的异常类型,我推测您正在使用 Scanner 来读取用户输入,特别是您正在调用 Scanner.nextInt ()。如果在下一个标记无法解释为 Java int 时调用此方法,则会抛出您指定类型的异常。

只有您可以决定如何最好地处理该问题,但一种可能性是将 menu() 方法的调用移至 try 内> block :

    // ...
    while (menuItem != 0) {
        try {
            menuItem = menu();
            switch (menuItem) {
            // ...

关于java - switch block try/catch 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35279755/

相关文章:

java - 我在尝试制作随机歌曲播放器时失败了

java - 如何在 Restful Web 服务上接收 Json 对象?

java - 删除父实体而不删除子实体 (jpa)

编译器没有为 'default' 开关中的替代名称给出错误

java - 变量声明如何在 switch 语句中的 case 中工作

java - java 中的 switch 可以反转吗?

java - 在n个竞争对手的比赛中安排k个位置

java - 使用文档根设置嵌入式 jetty

java - struts中foreach的使用方法

javascript - 我想使用一个下拉菜单,该菜单将使用 JavaScript 更改文档的 bgColor