手记

Java异常处理实例之图书管理系统

本实例中首先要定义两个异常类

public class ErrorOrder extends Exception {
    public ErrorOrder(){

    }
    public ErrorOrder(String message ){
        super(message);
    }

}
public class NoExist extends Exception {
    public  NoExist(){

    }
    public NoExist(String message){
        super(message);
    }

}

将两个异常类定义完毕之后我们需要在之后的方法中抛出异常
首先定义一个我们的功能实现类Bookmanage在该类中定义了一个List用于存放书籍,为了方便起见,我创建的AddBooks方法将一些BOOK对象存储到我们的书籍list中

public class Bookmanage {
    private  List<Book> books= new ArrayList<Book>();  ;
    private Scanner scanner =new Scanner(System.in);

        public  void AddBooks(){
        Book Book1 = new Book("1","高数");
        Book Book2 = new Book("2","离散数学");
        Book Book3 = new Book("3","大学语文");
        Book Book4 = new Book("4","大学英语");
        books.add(Book1);
        books.add(Book2);
        books.add(Book3);
        books.add(Book4);
    }

在顶级菜单中抛出异常ErrorOrder

public int choosemethod() throws ErrorOrder{
        System.out.println("请选择图书查询方式");
        System.out.println("1-以书名方式查询");
        System.out.println("2-以编号方式查询");
        String input = scanner.next();
        if(!input.equals("1")&&!input.equals("2")){
            throw new ErrorOrder("请输入正确的数字命令");
        }else{
            int a = Integer.parseInt(input);
            return a;
        }

    }

在图书搜索过程中抛出异常NoExist

public void SearchbyBookName()throws NoExist{
        System.out.println("请输入要搜索的图书名称");
        String input = scanner.next();
        int flag = 0;
        for (int i=0 ;i<books.size();i++){
            if (input.equals(books.get(i).getName())){
                System.out.println("已找到您所搜索的图书图书名称为:"+books.get(i).getName()+"图书ID为"+books.get(i).getID());
                flag =1;
                break;
            }
        }
        if (flag==0){
            throw new NoExist("您搜索的图书不存在");
        }
    }
    public void SearchbyBookID(int a) throws NoExist{
        String input =Integer.toString(a);
        int flag = 0;
        int Id = Integer.parseInt(input);
        for (int i = 0;i<books.size();i++){
            if (input.equals(books.get(i).getID())){
                System.out.println("已找到您所搜索的图书图书名称为:"+books.get(i).getName()+"图书ID为"+books.get(i).getID());
                flag = 1;
                break;
            }
        }
        if (flag==0){
            throw new NoExist("您搜索的图书不存在");
        }

    }
public int inputnum() throws ErrorOrder{
        String input = scanner.next();
        try{
            int num = Integer.parseInt(input);
            return num;
        }catch(Exception e){
            throw new ErrorOrder("请输入正确的数字命令");
        }

    }

入口函数

public static void main(String[] args) {
        Bookmanage BM = new Bookmanage();
        BM.AddBooks();
        while(true){
            try{
                int a = BM.choosemethod();
                if(a==1){
                    try{
                        BM.SearchbyBookName();
                        break;
                    }catch(NoExist e){
                        System.out.println(e.getMessage());
                    }
                }else if(a==2){
                    System.out.println("请输入所要查询的书籍ID");
                        int b =BM.inputnum();

                    try{
                        BM.SearchbyBookID(b);
                        break;
                    }catch(NoExist e){
                        System.out.println(e.getMessage());
                    }
                }
            }catch(ErrorOrder e){
                System.out.println(e.getMessage());
            }
        }

    }

在本实例中,将自定义异常,以及异常的抛出,Try catch语句基本实现,代码仍有需要优化之处,望多多交流

3人推荐
随时随地看视频
慕课网APP

热门评论

http://img.mukewang.com/5791fec5000127df09460331.jpg

问题1:对于有返回值的方法,无论什么情况都需要有一个return语句

问题2:if语句中条件如果成立抛出异常的同时重新输入

查看全部评论