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

    实验六 Java异常

    实验目的

    理解异常的基本概念;
    掌握异常处理方法及熟悉常见异常的捕获方法。

    实验要求

    练习捕获异常、声明异常、抛出异常的方法、熟悉try和catch子句的使用。
    掌握自定义异常类的方法。

    实验内容

    编写一个类,在其main()方法中创建一个一维数组,在try字句中访问数组元素,使其产生ArrayIndexOutOfBoundsException异常。在catch子句里捕获此异常对象,并且打印“数组越界”信息,加一个finally子句,打印一条信息以证明这里确实得到了执行。
    实验代码:

    package java7;
    
    public class Exception {
    	public static void main(String[] args){
            int [] a= new int[1];
            try{
                System.out.println(a[1000]);
            }
            catch(ArrayIndexOutOfBoundsException e){
                System.out.println("数组越界:"+e);
            }
            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部分处理危险品。

    package DangerException;
    
    public class DangerException extends Exception {
    	public void toShow() {
            System.err.print("属于危险物品");
        }
    
    	    }
    
    	class Goods{
    	    private boolean Danger;
    	    private String name;
    	    public Object getName;
    	    public Goods(boolean Danger,String name) {
    	        this.Danger=Danger;
    	        this.name=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()+"不是危险品");
    	    }
    	
    
    		}
    package DangerException;
    
    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();
            }
        
        }
    
        
        }
    
    
    
    


    `


    学习总结

    1.为什么要处理异常

    异常是导致程序中断运行的一种指令,是程序中的一些错误,但并不是所有的错误都是异常

    异常是因为:

    用户错误引起,
    程序员错误引起的,
    物理错误引起的
    

    出现异常不处理,程序会终止,系统不能正常运行。

    2.Exception(异常) 类的层次

    所有的异常类是从 java.lang.Exception 类继承的子类。

    Exception 类是 Throwable(可抛出的) 类的子类。除了Exception类外,Throwable还有一个子类Error 。
    Error:通常是一些物理性的,例如,JVM 本身问题
    异常类有两个主要的子类:IOException 类和 RuntimeException 类。
    ArithmeticException:算术异常,例如,一个整数"除以零"时,抛出此类的一个实例
    NumberFormatException:字符串不能转换为适当格式时,抛出该异常。
    ArrayIndexOutOfBoundsException:数组超出绑定时抛出的异常

    3.异常处理——捕获异常

    使用 try 和 catch 关键字可以捕获异常。try/catch 代码块放在异常可能发生的地方
    一个 try 代码块后面跟随多个 catch 代码块的情况就叫多重捕获。
    使用 try/catch

    try
    {
       // 程序代码
    }catch(ExceptionName e)
    {
       //Catch 块
    }finally{
    
    }
    

    4.throws/throw 关键字:

    如果一个方法没有捕获到一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。
    也可以使用 throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。

    5.finally关键字 (异常统一出口)

    finally 关键字用来创建在 try 代码块后面执行的代码块。
    无论是否发生异常,finally 代码块中的代码总会被执行。

  • 相关阅读:
    微服务架构技术栈选型手册(万字长文)
    Visual Studio 2013 always switches source control plugin to Git and disconnect TFS
    Visual Studio 2013 always switches source control plugin to Git and disconnect TFS
    MFC对话框中使用CHtmlEditCtrl
    ATL开发 ActiveX控件的 inf文件模板
    ActiveX: 如何用.inf和.ocx文件生成cab文件
    Xslt 1.0中使用Array
    如何分隔两个base64字符串?
    An attempt was made to load a program with an incorrect format
    JQuery 公网 CDN
  • 原文地址:https://www.cnblogs.com/luoyuliang/p/11693219.html
Copyright © 2011-2022 走看看