切换块 try/catch 异常
switch block try/catch exception
我有一个包含 5 个整数选项和一条默认消息的 switch
语句。我正在尝试让它工作,以便如果选择了除选择号码以外的任何内容,则会显示 "Invalid Input" 消息。它目前适用于数字,但如果输入任何其他内容,我会收到以下异常:
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
块中抛出的。由于该异常与以意外形式输入输入相关联,并且由于尝试将输入转换为数字显然 已经在方法 menu()
中执行了 ,之前进入 try
块,似乎可以合理地得出异常是从方法 menu()
抛出的结论。伴随异常的堆栈跟踪会直接告诉您这一点,并且比我从您提供的内容中可以更准确地告诉您。
根据任务的性质和您收到的异常类型,我推测您正在使用 Scanner
读取用户输入,特别是您正在调用 Scanner.nextInt()
。如果在无法将下一个标记解释为 Java int
.
时调用此方法,将抛出您指定类型的异常
只有您可以决定如何最好处理它,但一种可能性是将 menu()
方法的调用移动到您的 try
块中:
// ...
while (menuItem != 0) {
try {
menuItem = menu();
switch (menuItem) {
// ...
我有一个包含 5 个整数选项和一条默认消息的 switch
语句。我正在尝试让它工作,以便如果选择了除选择号码以外的任何内容,则会显示 "Invalid Input" 消息。它目前适用于数字,但如果输入任何其他内容,我会收到以下异常:
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
块中抛出的。由于该异常与以意外形式输入输入相关联,并且由于尝试将输入转换为数字显然 已经在方法 menu()
中执行了 ,之前进入 try
块,似乎可以合理地得出异常是从方法 menu()
抛出的结论。伴随异常的堆栈跟踪会直接告诉您这一点,并且比我从您提供的内容中可以更准确地告诉您。
根据任务的性质和您收到的异常类型,我推测您正在使用 Scanner
读取用户输入,特别是您正在调用 Scanner.nextInt()
。如果在无法将下一个标记解释为 Java int
.
只有您可以决定如何最好处理它,但一种可能性是将 menu()
方法的调用移动到您的 try
块中:
// ...
while (menuItem != 0) {
try {
menuItem = menu();
switch (menuItem) {
// ...