zoukankan      html  css  js  c++  java
  • 第八周课程总结&实验报告(六)

    实验六 Java异常

    实验目的
    理解异常的基本概念;
    掌握异常处理方法及熟悉常见异常的捕获方法。
    实验要求
    练习捕获异常、声明异常、抛出异常的方法、熟悉try和catch子句的使用。
    掌握自定义异常类的方法。

    实验内容
    编写一个类,在其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 实验报告六;
    
    public class 检查危险品 {
    	   public static void main(String[] args) {
               int ch[]= {0,1,2,3,4};
               try {
                       System.out.print(ch[6]);
                   }catch(ArrayIndexOutOfBoundsException a){
                       System.out.println("数组越界:"+a);
                   }finally {            
                       System.out.println("程序执行");
                   }
    }
    }
    
    

    DangerException

    package 实验报告六;
    
    	public class DangerException extends Exception{
    	    String things = "危险物品";
    	    public DangerException() {
    	    }
    	    public void toShow() {//输出危险物品
    	        System.out.println(things);
    	    }
    }
    

    Goods

    package 实验报告六;
    
    public class Goods {
        public String name;
        public boolean flag;
        public String Dangerthings[] = {"刀具","火药","汽油","易燃易爆物品","枪支"};
        public Goods() {
        }
        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;
        }
    }
    

    Machine

    package 实验报告六;
    
    public class Machine {
        Goods goods = new Goods();
        public Machine() {
        }
        public void checkBag(Goods goods)throws DangerException{
            if(goods.isDanger()) {
                DangerException danger = new DangerException();
                throw danger;
            }
            else {
                System.out.println(goods.getName()+"不是危险物品");
            }
        }
    }
    

    检查结果

    package 实验报告六;
    
    public class 检查结果 {
    	    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();
    	            }
    	        }                                     
    	    }
    }
    

    我i遇到问题的是关于Exception在程序中是必须使用try…catch进行处理。
    而RuntimeException可以不使用try…catch进行处理,但是如果有异常产生,则异常将由JVM进行处理。这题其实和老师上课
    讲的那个题目有点相似,但是我有个想法就是在 Goods类中定义危险物品是自己的输入的 而有没有一种程序或者数据库直接导入我们生活所规定的
    危险品,因为自己规定输入有点单一,在检查时有其他类型危险品不一定会检查出来,所以我感觉还是得加深学习

  • 相关阅读:
    什么样的代码称得上是好代码?
    九年程序人生 总结分享
    Docker入门 第一课 --.Net Core 使用Docker全程记录
    阿里云 Windows Server 2012 r2 部署asp.net mvc网站 平坑之旅
    Visual studio 2015 Community 安装过程中遇到问题的终极解决
    Activiti6.0 spring5 工作流引擎 java SSM流程审批 项目框架
    java 进销存 库存管理 销售报表 商户管理 springmvc SSM crm 项目
    Leetcode名企之路
    24. 两两交换链表中的节点
    21. 合并两个有序链表
  • 原文地址:https://www.cnblogs.com/liualiu/p/11695726.html
Copyright © 2011-2022 走看看