实验六 类的继承
一、实验目的

(1) 理解异常的基本概念:
(2) 掌握异常处理方法及熟悉常见异常的捕获方法。
二、实验要求
(1) 练习捕获异常、声明异常、抛出异常的方法、然悉try和catch子句的使用。
(2) 掌握自定义异常类的方法。
三、实验内容
(一)编写一个类,在其main(方法中创建一个一维数组,在try字句中
访问数组元素,使其产生ArrayIndex0utOfBoundsException异常。
在catch 子句里捕获此异常对象,并且打印“数组越界”信息,加
一个finally子句,打印一条信息以证明这里确实得到了执行。
1、实验代码

package yichang;

public class Exceptiondemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int a[]= {1,2,3,4,5};
        try {
            for(int i=0;i<=5;i++) {
                System.out.println(a[i]);
            }
        }catch(ArrayIndexOutOfBoundsException e) {
            System.out.println("数组越界");
        }finally {
            System.out.println("不管是否出现异常,都执行此代码");
        }
    }

}

2、实验结果

二、自定义异常类的使用
车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发
现危险品。
技术方案:
编写一个Exgeption的子类 DangerException,该子类可以创建异常对
象,该异常对象调用 toShowO方法输出“危险物品”。编写一个
Machine 类,该类的方法 checkBeg(Goods goods)当发现参数 goods是
危险品时(goods 的 isDanger属性是true)将抛出DangerException
异常。
程序在主类的main(方法中的 try-catch语句的try部分让Machine
类的实例调用 checkBeg (Goods goods)的方法,如果发现危险品就在
try-catch 语句的 catch 部分处理危险品。
1、实验代码

package 危险品;

import java.util.ArrayList;

public class Check {

    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<String>();

        list.add("油");
        list.add("烟");
        list.add("枪");
        list.add("零食");
        list.add("酒");
        list.add("刀");

        String name=list.get(5);
        Goods good = new Goods(name);
        good.setDanger(true);


        Machine mc=new Machine();

        try {
            mc.checkBag(good);
            System.out.println(good.getName() + ":检查通过");
        }catch(DangerException e) {
            e.toShow();
            System.out.println(good.getName() + ":未通过");
        }

    }

}

package 危险品;

public class DangerException extends Exception {
    private static final long serialVersionUID = 1L;

    private String message;

    public DangerException(String message) {
        super();
        this.message = message;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public void toShow() {
        System.out.println("危险物品:"+message);
    }

}

package 危险品;

public class Goods {

    private boolean isDanger;
    private String name;

    public boolean isDanger() {
        return isDanger;
    }

    public void setDanger(boolean isDanger) {
        this.isDanger = isDanger;
    }

    public String getName() {
        return name;
    }

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

    public Goods(String name) {
        this.name = name;
    }


}

package 危险品;

public class Machine {


    public void checkBag(Goods goods) throws DangerException{
        if(goods.isDanger()==true) {
            throw new DangerException(goods.getName());
        }
        else {
            System.out.println(goods.getName()+":不是危险品");
        }
    }
}

2、实验结果

三、总结
多线程
多线程的实现有两种方法继承Thread类和使用Runnable接口
Thread类不共享,Runnable接口共享。
格式

class 类名称 extends Thread{
      属性...;
      方法...;
      public void run(){
             线程主体;
    }
}

实现多线程不是调用run()方法,而是start()方法。

02-13 16:57