• 第八周课程总结&实验报告(六)


    实验六 Java异常

    一、 实验目的

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

    二、实验内容

    编写一个类,在其main()方法中创建一个一维数组,在try字句中访问数组元素,使其产生ArrayIndexOutOfBoundsException异常。在catch子句里捕获此异常对象,并且打印“数组越界”信息,加一个finally子句,打印一条信息以证明这里确实得到了执行。
    自定义异常类的使用
    车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发现危险品。

    实验源码:

    package com.company;
    
    public class One {
        public static void main (String args[]) {
            int a [] = new int[2];
            try{
                int n = a[3];
            }
            catch(ArrayIndexOutOfBoundsException aio){
                System.out.println("****数组越界!****");
            }finally {
                System.out.println("****结束****");
            }
        }
        }
    

    实验结果:

    编写一个Exgeption的子类DangerException,该子类可以创建异常对象,该异常对象调用toShow()方法输出“危险物品”。编写一个Machine类,该类的方法checkBag(Goods goods)当发现参数goods是危险品时(goods的isDanger属性是true)将抛出DangerException异常。
    程序在主类的main()方法中的try-catch语句的try部分让Machine类的实例调用checkBag(Goods goods)的方法,如果发现危险品就在try-catch语句的catch部分处理危险品。

    实验源码:

    DangerException

    public class DangerException  extends Exception {
        public void toShow()
       {
            System.out.println("危险物品!");
       }
    }
    

    Goods

    public class Goods {
        boolean isDanger;
        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;
        }
    
    }
    

    Machine

    public class Machine
    {
        public void checkBag(Goods goods)throws DangerException
        {
            if(goods.isDanger())
            {
                DangerException danger = new DangerException();
                throw new DangerException();
            }
            else System.out.println(goods.getName() );
        }
    }
    

    One

    public class One {
        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();
                if (i % 2 == 0) {
                    goods[i].setDanger(false);
                    goods[i].setName(name[i]);
                } else {
                    goods[i].setDanger(true);
                    goods[i].setName(name[i]);
                }
            }
            for (int j = 0; j < goods.length; j++) {
                try {
                    machine.checkBag(goods[j]);
                    System.out.println("安全");
                } catch (DangerException e) {
                    e.toShow();
                    System.out.println(goods[j].getName() +"是危险物品");
                }
            }
        }
    }
    

    实验结果:

    内容总结:

    异常

    1.异常时导致程序中断运行的一种指令流,如果不对异常进行正确的处理,则可能导致程序的中断执行,造成不必要的损失。
    2.异常代表了一种意外的情况,代表了正常情况下不会发生的情况。
    3.在程序的设计中必须要考虑各种异常的发生,并正确的做好相应的处理,这样才能保住程序的正常执行。
    异常处理格式

      try 
       {   可能异常语句
          }catch(异常类 异常对象)
      {
           编写异常处理语句
       }finally{
              一定会运行到的程序代码
        }
    

    throws

    public 返回值类型 方法名称(参数列表...) throws 异常类{}
    注意:throw不会单独的使用

    throw关键字的使用完全符合异常处理机制
    但是,一般来讲用户都在避免异常的产生,所以不会手工抛出一个新的异常类的实例,而往往会抛出程序中已经产生的异常实例类。
    用法

    throw关键字用法
      class Math{
     public int div(int i,int j)throws Exception{
     int temp=i/j;
     return temp;
    }
    }
    
  • 相关阅读:
    C# 使用Enumerable.Range 打印数字
    C#中的范围类型(Range Type)
    C# 编程中的堆栈(Stack)和队列(Queue)
    C# 委托(delegate、Action、Func、predicate)
    使用线程以及对信号量 AutoResetEvent和ManualResetEvent的理解
    SQL Sever触发器的基本语法与作用
    C#控制台程序使用Log4net日志组件
    初级委托详解(C# 用委托有什么好处? 它起什么作用?)
    獲取串口數據,設置串口
    MVC 下 打包多个word到压缩包
  • 原文地址:https://www.cnblogs.com/zsbhs/p/11701472.html
Copyright © 2020-2023  润新知