那请帮我添加个异常处理完善这个代码
时间: 2024-03-16 11:43:35 浏览: 20
好的,下面是添加异常处理后的代码:
```
public void deleteOrder() {
System.out.println("====================");
System.out.println("请输入你要删除的订单编号:");
Scanner sc = new Scanner(System.in);
String s = sc.next();
int index;
try {
index = Integer.parseInt(s) - 1;
if (index < 0 || index >= orders.size()) {
throw new IndexOutOfBoundsException("订单编号超出范围!");
}
Dish mainCourse = orders.get(index);
orders.remove(mainCourse);
System.out.println("移除成功\n");
showOrder();
} catch (NumberFormatException e) {
System.out.println("请输入有效的订单编号!\n");
deleteOrder();
} catch (IndexOutOfBoundsException e) {
System.out.println(e.getMessage() + "\n");
deleteOrder();
}
System.out.println("====================");
}
```
主要的修改如下:
1. 在try语句块中,添加了对订单编号是否超出范围的判断,如果超出范围,则抛出IndexOutOfBoundsException异常。
2. 在catch语句块中,分别处理NumberFormatException和IndexOutOfBoundsException异常,在控制台输出相应的错误提示语句,并重新调用deleteOrder()方法等待用户重新输入订单编号。
3. 将移除成功的提示语句移动到try语句块中,避免在抛出异常时也打印移除成功的提示语句。
这样,即使用户输入非数字字符或者超出订单编号范围,程序也能够进行异常处理,避免因异常而导致程序崩溃。