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

来源:1-9 经验总结

霸气小肆毛

2019-03-04 15:21


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://img.mukewang.com/5c7cd09d00011fab05490427.jpg


写回答 关注

3回答

  • Xiong丶
    2019-03-04 17:17:58
    已采纳

    就看你的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("第一句话:命令输入错误,请根据提示输入命令");


  • 霸气小肆毛
    2019-03-04 17:02:27

    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","体育"}};

    }


    霸气小肆毛 回复Xiong丶

    好的,谢谢

    2019-03-04 18:11:37

    共 2 条回复 >

  • Xiong丶
    2019-03-04 16:59:47

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

    霸气小肆毛

    大佬,我回到下面的框里面去了,您再看看呢。

    2019-03-04 17:03:41

    共 1 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题