弄了一天,異常真難處理!
package user;
public class Book {
String name;
int number;
public Book(int a,String b) {
this.number=a;
this.name=b;
}
void show() {
System.out.println("圖書編號(hào)為:"+number+'\n'+"圖書名字為:"+name);
}
}
package user;
public class Errora extends Exception {
public Errora(String a) {
super(a);
}
}
package user;
public class Errorb extends Exception {
public Errorb(String b) {
super(b);
}
}
package user;
public class Errorc extends Exception {
public Errorc(String c) {
super(c);
}
}
package user;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Test {
static int d;
static Book[] booklist= {
new Book(1,"金瓶梅"),
new Book(2,"極樂(lè)寶鑒"),
new Book(3,"西游記"),
new Book(4,"三國(guó)演義"),
new Book(5,"紅樓夢(mèng)"),
new Book(6,"水滸傳"),
new Book(7,"如來(lái)神掌"),
new Book(8,"周公解夢(mèng)"),
new Book(9,"山海經(jīng)")
};
public static void main(String[] args) throws Errora, Errorb, Errorc{
// TODO Auto-generated method stub
System.out.println("請(qǐng)選擇查找方式,按序號(hào)查找請(qǐng)輸入1,按書名查找請(qǐng)輸入2");
new Test();
Test.find();
? ?System.out.println("感謝使用,再見(jiàn)!");
}
public static void find() throws Errora, Errorb, Errorc {
try{
Scanner scanner=new Scanner(System.in);
d=scanner.nextInt();
? ?new Test().test();
}catch(InputMismatchException e) {
System.out.println("輸入?yún)?shù)類型錯(cuò)誤,請(qǐng)重新輸入!");
new Test().find();
}
}
void test() throws Errora,Errorb,Errorc {
try {
int count = d;
if(count==1) {
System.out.println("請(qǐng)輸入查找的序號(hào),回車確認(rèn)!");
Scanner scanner2=new Scanner(System.in);
int a=scanner2.nextInt();
switch(a) {
case 1:booklist[0].show();break;
case 2:booklist[1].show();break;
case 3:booklist[2].show();break;
case 4:booklist[3].show();break;
case 5:booklist[4].show();break;
case 6:booklist[5].show();break;
case 7:booklist[6].show();break;
case 8:booklist[7].show();break;
case 9:booklist[8].show();break;
default:throw new Errorb("序號(hào)不存在!請(qǐng)重新輸入!");
}
}
else if(count==2){
System.out.println("請(qǐng)輸入查找的書名,回車確認(rèn)!");
Scanner scanner3=new Scanner(System.in);
String b=scanner3.next();
int num=0;
for(int i=0;i<booklist.length;i++) {
if(b.contentEquals(booklist[i].name)) {
booklist[i].show();
}
else if(!(b.contentEquals(booklist[i].name))) {
num++;
if(num==9) {
throw new Errorc("圖書不存在!請(qǐng)重新輸入!");
}
}
}
}
else {
throw new Errora("輸入錯(cuò)誤!請(qǐng)重新輸入!");
}
}
catch(Errora e) {
e.printStackTrace();
new Test().find();
}
catch(Errorb e) {
e.printStackTrace();
new Test().test();
}
catch(Errorc e) {
e.printStackTrace();
new Test().test();
}
}
}
2019-10-07
你需要將執(zhí)行中可能出現(xiàn)異常的代碼放到try中執(zhí)行,如果不知道怎么去捕獲異常的話就直接拋出異常,在聲明異常的時(shí)候如果不知道異常的類型就直接拋出exception.