如何对非法字符异常进行捕获?

来源:1-9 经验总结

wang5505649004105372

2019-09-08 20:39

package pojo;

public class Book {
    int id;//图书编号
    String name;//图书名字
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

  public Book(){

  }
  public Book(int id,String name){
        this.id=id;
        this.name=name;
  }
  public void show(){
        System.out.println("书本编号为:"+id+"书本名称为:"+name);
  }
}


package pojo;

//输入命令错误异常
public class InputErrorException extends Exception {
    public InputErrorException(){

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


package pojo;

//图书不存在异常
public class NotFindThisBookException extends Exception {
    public NotFindThisBookException(){}//无参构造函数
    public NotFindThisBookException(String message){
        super(message);
    }
}
package pojo;

import java.util.InputMismatchException;
import java.util.Scanner;

//显示与流程控制类
public class BookLent {
    int num=0;
    int num1=0;
    int count=0;//借书数量
    int sum=5;//借书限制为5本
    Book[] books={new Book(1,"至尊人生"),
            new Book(2,"阴间商人"),
            new Book(3,"斗破苍穹"),
            new Book(4,"星际穿越"),
            new Book(5,"盗梦空间"),
    };
    public void lent()throws NotFindThisBookException,InputErrorException{
        try{
        System.out.println("亲爱的同学欢迎您使用借书系统!  一份耕耘,份收获,愿你在书中所得能使你变得更好!");
        System.out.println("请您输入命令:1.按照名称查找图书;2.按照序号查找图书");
        Scanner in=new Scanner(System.in);
            int select=in.nextInt();
            if(!(select==1||select==2)){
                System.out.println("输入不合法系统自动退出");
                throw new InputErrorException("输入错误异常");
                //System.exit(0);
            }else if(select==1){
                System.out.println("请输入图书书名");
                String select1=in.next();
                for(int i=0;i<books.length;i++){
                    if(select1.equals(books[i].name)){
                        books[i].show();
                        count=count+1;
                        sum=sum-count;
                        System.out.println("你已借书"+count+"本还能借:"+sum+"本");
                        break;
                    }else if(!(select1.equals(books[i].name))){
                        num++;
                        if(num==5){
                            throw new NotFindThisBookException("图书不存在异常");
                        }
                    }
                }

            }else {
                System.out.println("请输入图书编号");
                int select2=in.nextInt();
                for(int j=0;j<books.length;j++){
                if((select2<0||select2>books.length)){
                    System.out.println("输入不合法系统自动退出");
                    throw new InputErrorException("没有此编号的图书异常");
                }else if(select2-1==j){
                    books[j].show();
                    count=count+1;
                    sum=sum-count;
                    System.out.println("你已借书"+count+"本还能借:"+sum+"本");
                }
                }
            }
       }catch (InputErrorException e){
            //System.out.println("命令输入错误!请根据提示输入数字命令!");
            e.printStackTrace();

        }catch(NotFindThisBookException e){
           // System.out.println("不好意思我们这里没有这本书!");
            e.printStackTrace();
        }catch (Exception e){

        }


    }
}
import pojo.BookLent;
import pojo.InputErrorException;
import pojo.NotFindThisBookException;

public class Test2 {
    public static void main(String[]arg) throws NotFindThisBookException, InputErrorException {
        BookLent bl=new BookLent();
        bl.lent();
    }
}

http://img1.mukewang.com/5d74f695000117e204100218.jpg

http://img2.mukewang.com/5d74f6950001530c06780304.jpg


写回答 关注

1回答

  • 慕瓜8095432
    2019-09-16 19:52:04

    /*


    NotFindThisBookException是你通过throw生成并抛出的异常,并在方法体外throws声明并抛出

    用throws出现异常时会停止运行。

    你可以不抛出异常直接打印输出"图书不存在异常",asdasd本身也是字符串并不会出现异常

    ps:

    throw 是和throws配套使用的,并不是和catch配套使用的

    如果需要自定义异常应该新建自定义的异常类并重写方法




Java入门第三季

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

409792 学习 · 4340 问题

查看课程

相似问题