第八周课程总结&实验报告(六)
实验六 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部分处理危险品。
一
1、源代码
package 实验六; public class Liu { public static void main(String args[]) { System.out.println("*****计算开始*********"); try { String str1=args[0]; String str2=args[1]; }catch(ArrayIndexOutOfBoundsException e) { System.out.println("数组越界异常:"+e); }finally { } System.out.println("****计算结束*******"); } }
2、运行截图
二
1、源代码
package 实验六; class DangerException extends Exception { public void toshow() { System.out.println("危险物品"); } } class Goods{ private boolean Danger; private String name; public Object getName; public Goods(boolean Danger,String name) { this.Danger=Danger; this.getName=name; } public boolean Danger() { return Danger; } public void setName(String name) { this.name=name; } public String getName() { return name; } } class Machine{ public void checkBag(Goods goods)throws DangerException{ if(goods.Danger()) throw new DangerException(); else System.out.println(goods.getName()+"不是危险品"); } } public class Test{ public static void main(String[] args) { Machine mac=new Machine(); Goods goods=new Goods(false,null); String a[]= {"暴力女友","枪","书本"}; for(int i=0;i<a.length;i++) { goods.setName(a[i]); if(a[i].equals("暴力女友")||a[i].equals("枪")) { goods.Danger(); System.out.println(a[i]+"是危险物品"); } else goods.Danger(); } try { mac.checkBag(goods); }catch(DangerException e) { e.toshow(); } } }
2、运行结果
总结:第一题很简单主要体现了使用异常的处理。第二题首先建立一个Exgeption的子类DangerException,用来处理数据的异常,第二步建立Goods类对异常正常物品进行一个定义,第三步建立Machine类,该类的方法checkBag(Goods goods)当发现参数goods是危险品时(goods的isDanger属性是true)将抛出DangerException异常。最后try正常物品,以及捕捉危险物品并toshow输出。
学习总结
异常处理格式
try{ //有可能出现异常的语句 }catch(异常类 异常对象){ //编写异常的处理语句 } finally{ 一定会运行到的程序代码; }
异常类的继承结构
Exception:一般表示的是程序中出现的问题,可以直接使用try....catch 处理。
Error:一般指的是JVM错误,程序中无法处理。
throw与throws关键字
throws关键字:
public 返回值类型 方法名称(参数列表)throws异常类{}
throw关键字:
与throws不同的是,可以直接使用throw关键字抛出一个异常。抛出时直接抛出异常类的实例化对象。
Exception类与RuntimeException类
1、Exception在程序中是必须使用try…catch进行处理。
2、RuntimeException可以不使用try…catch进行处理,但是如果有异常产生,则异常将由JVM进行处理。