为了账号安全,请及时绑定邮箱和手机立即绑定

请问各位大佬,为什么当我异常输入指令时,比方说输入查找指令为a时,我想要输出的(第一句话:命令输入错误,请根据提示输入命令),就是不输出呢? throw new libraryException("第一句话:命令输入错误,请根据提示输入命令")这行代码到底有什么作用呢?


package $$$$$$$;

public class libraryException extends Exception{//自定义异常

public libraryException() {//无参方法

}

public libraryException(String message) {//有参构造方法

super(message);

}}

package $$$$$$$;

import java.util.Scanner;

public class library {

 public static void main(String[] args) {//入口

  Index();

 }

 public static void Index() {

  System.out.println("欢迎进入图书馆查书系统\n请输入您的指令:\n1-按名称查找图书\n2-按编号查找图书\n");

  Scanner in = new Scanner(System.in);

  String i = in.next();

  try {

   if (i.equals( "1")) {

    System.out.println("请输入您需要查找的图书的书名");

    name();

   } else if (i.equals( "2")) {

    System.out.println("请输入您需要查找的图书的编号");

    number();

   } else {

System.out.println("测试");

    throw new libraryException("第一句话:命令输入错误,请根据提示输入命令");

   }

  } catch (Exception e) {

   System.out.println("第二句话:请输入正确指令\n");

   Index();

  }

 }

}

请问各位大佬,为什么当我异常输入指令时,比方说输入查找指令为a时,我想要输出的(第一句话:命令输入错误,请根据提示输入命令),就是不输出呢?

throw new libraryException("第一句话:命令输入错误,请根据提示输入命令")这行代码到底有什么作用呢?

谢谢大佬帮忙解答

下面是运行结果

https://img1.sycdn.imooc.com//5c7cd09d00011fab05490427.jpg


正在回答

3 回答

就看你的main吧,主要问题在这里(上面的框),在抛出libraryException的时候程序不会输出“第一句话:命令输入错误……”按照抛出异常的顺序而是应该在后面的catch中输出语句,所以这块的代码应该改成后面我写的那个(下面的框),然后你再试试。

System.out.println("测试");    throw new libraryException("第一句话:命令输入错误,请根据提示输入命令");   }  } catch (Exception e) {   System.out.println("第二句话:请输入正确指令\n");
System.out.println("测试");    throw new libraryException();   }  } catch (libraryException e) {   System.out.println("第一句话:命令输入错误,请根据提示输入命令");


0 回复 有任何疑惑可以回复我~

public static void name() {//name方法

  Scanner in = new Scanner(System.in);

  String str = in.nextLine();

  int index = -1;

  try {

   for (int i = 0; i < BOOK.length; i++) {

    if (BOOK[i][1].equals(str)) {

     index = i;

     break;

    }

   }

   if (index != -1) {

    System.out.println("编号: " + BOOK[index][0] + "  书名 " + BOOK[index][1] + " 存在");

   } else {

    throw new Exception();

   }

  } catch (Exception e) {

   System.out.println("该书不存在,请重新输入正确书名......");

   name();

  }

 }

public static void number() {//number方法

  Scanner in = new Scanner(System.in);

  String str = in.nextLine();

  int index = -1;

  try {

   for (int i = 0; i < BOOK.length; i++) {

    if (BOOK[i][0].equals(str)) {

     index = i;

     break;

    }

   }

   if (index != -1) {

    System.out.println("编号: " + BOOK[index][0] + "  书名 " + BOOK[index][1] + " 存在");

   } else {

    throw new Exception();

   }

  } catch (Exception e) {

   System.out.println("该书不存在,请重新输入正确编号......");

   number();

  }

 }

 

 public static String[][] BOOK = {{"0001","语文"},{"0002","数学"},{"0003","英语"},{"0004","体育"}};

}


0 回复 有任何疑惑可以回复我~
#1

Xiong丶

我回复在下面了
2019-03-04 回复 有任何疑惑可以回复我~
#2

霸气小肆毛 提问者 回复 Xiong丶

好的,谢谢
2019-03-04 回复 有任何疑惑可以回复我~

能把number();的代码贴上来看看吗

0 回复 有任何疑惑可以回复我~
#1

霸气小肆毛 提问者

大佬,我回到下面的框里面去了,您再看看呢。
2019-03-04 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问各位大佬,为什么当我异常输入指令时,比方说输入查找指令为a时,我想要输出的(第一句话:命令输入错误,请根据提示输入命令),就是不输出呢? throw new libraryException("第一句话:命令输入错误,请根据提示输入命令")这行代码到底有什么作用呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信