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;
//輸入命令錯(cuò)誤異常
public?class?InputErrorException?extends?Exception?{
????public?InputErrorException(){
????}
????public?InputErrorException(String?message){
????????super(message);
????}
}
package?pojo;
//圖書不存在異常
public?class?NotFindThisBookException?extends?Exception?{
????public?NotFindThisBookException(){}//無參構(gòu)造函數(shù)
????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;//借書數(shù)量
????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("親愛的同學(xué)歡迎您使用借書系統(tǒng)!??一份耕耘,份收獲,愿你在書中所得能使你變得更好!");
????????System.out.println("請您輸入命令:1.按照名稱查找圖書;2.按照序號查找圖書");
????????Scanner?in=new?Scanner(System.in);
????????????int?select=in.nextInt();
????????????if(!(select==1||select==2)){
????????????????System.out.println("輸入不合法系統(tǒng)自動退出");
????????????????throw?new?InputErrorException("輸入錯(cuò)誤異常");
????????????????//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("輸入不合法系統(tǒng)自動退出");
????????????????????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("命令輸入錯(cuò)誤!請根據(jù)提示輸入數(shù)字命令!");
????????????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();
????}
}


2019-09-16
/*
NotFindThisBookException是你通過throw生成并拋出的異常,并在方法體外throws聲明并拋出
用throws出現(xiàn)異常時(shí)會停止運(yùn)行。
你可以不拋出異常直接打印輸出"圖書不存在異常",asdasd本身也是字符串并不會出現(xiàn)異常
ps:
throw 是和throws配套使用的,并不是和catch配套使用的
如果需要自定義異常應(yīng)該新建自定義的異常類并重寫方法