标签:bounds ret 语句 name 图片 对象 空间 提示 exception
实验六 Java异常
车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发现危险品。
技术方案:
编写一个Exgeption的子类DangerException,该子类可以创建异常对象,该异常对象调用toShow()方法输出“危险物品”。编写一个Machine类,该类的方法checkBag(Goods goods)当发现参数goods是危险品时(goods的isDanger属性是true)将抛出DangerException异常。
程序在主类的main()方法中的try-catch语句的try部分让Machine类的实例调用checkBag(Goods goods)的方法,如果发现危险品就在try-catch语句的catch部分处理危险品。
实验一源代码:
package main1; public class Test { public static void main(String[] args) { int a[]= {1,2,3,4,5,6,7,8,9}; try { System.out.println(a[10]); } catch(ArrayIndexOutOfBoundsException e){ System.out.println("数组越界:"+e); } finally { System.out.println("程序执行到此"); } } }
实验一结果截图:
实验1的过程和问题:
刚看题目不知道ArrayIndexOutOfBoundsException异常具体指的是出现什么异常,后在书上看到是没有输入参数或者输入的参数不够才会出现这个错误提示,知道后就比较简单了,首先定义一个数组a[],再输出这个数组中没有输入参数的a[10]就会出现这个错误。
实验二源代码:
package main1; import java.util.*; class DangerException extends Exception {//子类DangerException通过继承Exception类 public void toShow() {//调用toShow()方法输出“危险物品” System.out.println("危险物品!"); } } class Machine { public void checkBag(Goods goods) throws DangerException{ if(goods.isDanger()) {//判断是不是危险品 DangerException danger=new DangerException(); throw danger;//抛出异常 } } } class Goods { private String name;//定义物品名 private boolean isDanger=true; public Goods(String name) { this.name=name; //为name属性赋值 } public String getName() { return name; } public void setName(String name) { this.name = name; } public boolean isDanger() { return isDanger; } public void setDanger(boolean isDanger) { this.isDanger = isDanger; } } public class Test { public static void main(String args[]) { ArrayList dangerlist=new ArrayList(); dangerlist.add("管制刀具"); dangerlist.add("火药"); dangerlist.add("手枪"); dangerlist.add("毒药"); dangerlist.add("易燃易爆物品");//添加违规物品名录 System.out.println("输入检查的物品:"); Scanner sc=new Scanner(System.in); String name=sc.next(); Goods goods=new Goods(name); Machine machine=new Machine(); //实例化并开辟空间 try { machine.checkBag(goods); //调用checkBag方法,检查是否有危险品 } catch (DangerException e) { if(dangerlist.contains(name)) { e.toShow(); //调用toShow()输出 System.out.println(goods.getName()+"检查完毕,是危险品不能通过"); //输出 } else{ System.out.println(goods.getName()+"检查完毕,不是危险品可以通过"); } } } }
实验二结果截图:
实验二过程和问题:
这道题老师讲过类似的,但还是有难度,前面的类和方法还好,主要是不知道怎么建立一个违规物品的名单并用来判断物品是否为违禁物品,这一问题花费了大量时间,后来还是再同学帮助下写了出来,利用ArrayList类可以存储任意多的对象,但还是只能一次判断一个物品,功能也不完善,还有很多不足,对抛出异常还要好好学习,请教同学。
学习课程总结
异常:
try{
被检测的代码
可能出现异常的代码
}catch(异常类名 变量){
异常的处理方式
循环,判断,调用方法,变量
}finally{
必须要执行的代码
}
Exception在程序中必须使用try catch进行处理,RuntimeException可以不使用try catch进行处理,但是如果有异常产生,则异常将由JVM进行处理。Exception:一般表示的是程序中出现的问题,可以直接使用try…catch处理。Error:一般指的是JVM错误,程序中无法处理。
异常中的关键字:throw 在方法的内部,抛出异常对象,throws用于方法的声明上,表名此方法可能出现异常请调用者处理,throws 后面必须写异常类的类名,
学习总结:
这周主要学习了抛出异常,感觉抛出异常的实用性不错,但还是有点难,做题目中遇到了一些困难,后来还是再同学帮助下写了出来,但题目还有很多不足,对抛出异常还要好好学习,请教同学。
标签:bounds ret 语句 name 图片 对象 空间 提示 exception
原文地址:https://www.cnblogs.com/198266qq/p/11701459.html