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

来源:互联网 发布:unity3d ios 模拟器 编辑:程序博客网 时间:2024/05/17 23:13

关键字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;                 }             }        }    }}
0 0