第八周课程总结&实验报告(六)
实验六 Java异常
- 实验内容
- 编写一个类,在其main()方法中创建一个一维数组,在try字句中访问数组元素,使其产生ArrayIndexOutOfBoundsException异常。在catch子句里捕获此异常对象,并且打印“数组越界”信息,加一个finally子句,打印一条信息以证明这里确实得到了执行。
- 自定义异常类的使用
车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发现危险品。
技术方案:
编写一个Exgeption的子类DangerException,该子类可以创建异常对象,该异常对象调用toShow()方法输出“危险物品”。编写一个Machine类,该类的方法checkBag(Goods goods)当发现参数goods是危险品时(goods的isDanger属性是true)将抛出DangerException异常。
程序在主类的main()方法中的try-catch语句的try部分让Machine类的实例调用checkBag(Goods goods)的方法,如果发现危险品就在try-catch语句的catch部分处理危险品。
package java实验报告六; public class Test1 { public static void main(String[] args) { char c[] = { 'a', 'b', 'c', 'd', 'e' }; try { System.out.print(c[5]); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("数组越界:" + e); } finally { System.out.println("程序执行"); } } }
package java实验报告六; public class DangerException extends Exception { public void toShow() { System.out.println("是危险物品"); } }
package java实验报告六; public class Goods { private String name; boolean flag; String Dangerthings[] = { "刀具", "汽油", "毒*品", "炸*药", "枪*支" }; public void setName(String name) { this.name = name; } public String getName() { return this.name; } public boolean isDanger() { for (int i = 0; i < Dangerthings.length; i++) { if ((this.name).equals(Dangerthings[i])) { this.flag = true; break; } else { this.flag = false; } } return this.flag; } }
package java实验报告六; public class Machine { Goods goods = new Goods(); public void checkBag(Goods goods) throws DangerException { if (goods.isDanger()) { DangerException danger = new DangerException(); throw danger; } else { System.out.println(goods.getName() + "不是危险物品"); } } }
package java实验报告六; public class Test2 { public static void main(String[] args) { Machine machine = new Machine(); String name[] = {"食品","刀具","汽油","水","手机","内裤","毒*品","炸*药"}; Goods goods[] = new Goods[name.length]; for(int i=0;i<name.length;i++) { goods[i] = new Goods(); goods[i].setName(name[i]); try { machine.checkBag(goods[i]); } catch(DangerException e){ System.out.print(name[i]); e.toShow(); } } } }
总结:理解了异常的基本概念,异常(Exception)就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。异常处理通过5个关键字来实现:try、catch、finally、throw、throws。
关键字 | 作用 |
---|---|
try | 执行可能产生异常的代码 |
catch | 捕获异常 |
finally | 无论是否发生异常,代码总能执行 |
throws | 声明方法可能要抛出的各种异常 |
throw | 手动抛出异常 |