public static void BookName() throws Exception { try { String name = sc.next(); for (int i = 0; i < bookname.length; i++) { int num = i + 1; if (name.equals(bookname[i])) { System.out.println("******序号" + num + "." + name + "******"); break; } } throw new Exception("******nameException******"); } catch (Exception e) { System.out.println("******输入书名有误请重新输入******"); BookName(); } }
输入正确的书名时,结果显示正确。但为什么还会提示“******输入书名有误请重新输入******
”
个人认为是break跳出的是for循环并没有跳出try语句,所以往下执行创建了一个“**********nameException***********”异常对象并抛出,且与catch()中的参数类型相匹配所以就执行了catch语句。
修改:我觉得应该把“throw new Exception("**************nameException****************")”放入else语句中。