Java学习--(九)异常处理

关键字try…catch…catch…finally…(finally执行catch错误后要执行的代码)。
在java语言中,错误类的基类是java.lang.Error,异常类的基类是java.lang.Exception。 两者的父类都是java.lang.Throwable。一般Error类都是程序本身无法修复的错误,而Exception则可以通过异常处理来处理。Exception下如下又有几种异常
这里写图片描述
使用方法:

try{
    System.out.println("输入整数:");
    Scanner in=new Scanner(System.in);
    int num=in.nextInt();//输入字符串就会被catch

}
catch(InputMissmatchException e){
    System.out.println("输入整数!");
}
//finally{
//  @TODO
//}

如此还可以多个catch一起用。多个catch时按照先细后大的顺序排列,比如先是子类们,最后是Exception这个最大的类。

throw throws
throws用于声明,比如

public static void BNEE() throws BookNotExistException{
        System.out.println("请重新输入");
        throw new BookNotExistException();
    }

表示该函数会抛出BookNotExistException这个异常,也可以不用函数,直接用C++那种方法,在try内直接抛出,但不同的是自己定义的异常抛出时需要关键字new,新建一个object。
自己定义时只需要继承自Exception这个父类就可以,类内可以什么都不用,或者是两个构造函数,如下

class BookNotExistException extends Exception{
    BookNotExistException(){}
    BookNotExistException(String s){
        super(s);
    }
}

作业
这里写图片描述这里写图片描述
代码

package com.kaihong;

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

class BookNotExistException extends Exception{
    BookNotExistException(){}
    BookNotExistException(String s){
        super(s);
    }
}

public class BookSystem {

    public static void BNEE() throws BookNotExistException{
        System.out.println("请重新输入");
        throw new BookNotExistException();
    }


    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in=new Scanner(System.in);
        String[] books=new String[]{"math","大英","大物"};
        int op,num;
        while(true){
            System.out.println("请输入命令:1-按序号查找;2-按书名查找");
             try{
                op=in.nextInt();
             }
             catch(InputMismatchException e){
                 System.out.println("命令输入错误,请输入正确指令");
                 continue;
             }
             if(op==1){
                 System.out.println("请输入序号");
                 try{
                     num=in.nextInt();
                     if(num>3)
                         BNEE();
                     System.out.println("book:"+books[num-1]);
                 }
                 catch(InputMismatchException e){
                     System.out.println("命令输入错误,请输入正确指令");
                     continue;
                 }
                 catch(BookNotExistException e){
                     System.out.println("图书不存在");
                     continue;
                 }
             }
             if(op==2){
                 System.out.println("请输入书名:");
                 try{
                     String str=in.next();
                     int flag=0;
                     for(int i=0;i<3;i++){
                         if(str.equals(books[i]))
                             {
                             System.out.println("books:"+books[i]);
                             flag=1;
                             break;
                             }
                     }
                     if(flag==0){
                         BNEE();
                     }
                 }
                 catch(InputMismatchException e){
                     System.out.println("命令输入错误,请输入正确指令");
                     continue;
                 }
                 catch(BookNotExistException e){
                     System.out.println("图书不存在");
                     continue;
                 }
             }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值