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

    实验六 Java异常

    实验目的

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

    实验要求

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

    实验内容

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

    package hello.java;
    
    public class Yichan {
    
    public static void main(String[] args) {
      int a[]=new int [3];
      
      try
      {
    	  for(int i=0;i<4;i++)
    	  
    		 System.out.println(a[i]); 
    
    }catch(ArrayIndexOutOfBoundsException A)
      {
    	 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部分处理危险品。
    代码

    package hello.java;
    
    @SuppressWarnings("serial")
    public class DangerException  extends Exception  {
    
    
    public void toShow() {
    	
    	System.err.println("危险物品");
    }
    
    
    }
    
     package hello.java;
    
    public class Goods {
    
      private	String name;
      boolean isDanger;
    
      public boolean isDanger() {
    		
    		return isDanger;
    	}
    public   String getName() {
    	return name;
    }
    public void setName(String name) {
    	this.name = name;
    }
    
    
    public void setDanger(boolean isDanger) {
    	this.setIsDanger(isDanger);
    }
    public Object getIsDanger() {
    	return isDanger;
    }
    public void setIsDanger(Object isDanger) {
    	this.isDanger = (boolean) isDanger;
    }
    
    
    
        }
    
    package hello.java;
    
    public class JIqi {
    public void checkBag (Goods goods) throws DangerException
     {
    
    if(goods.isDanger()){  
    	
    
     DangerException isdanger=new DangerException(); 
    throw isdanger;
    }
    
    
    }
    }
    package hello.java;
    
    public class Check {
    
    public static void main(String[] args) {
    	
    	JIqi qi = new JIqi();
    	Goods goods = new Goods();
    	String  name []={"可乐","雪碧","菠萝啤","毒酒"};
    	 for(int i=0;i<name.length;i++)
    	 {
    		 goods.setName(name[i]);
         if(name[i].equals("毒酒")) {
             goods.isDanger();
             System.err.println(name[i]+"是危险品");
         }
         else 
        	 System.out.println(name[i]+"是安全品");
         }
    
         try {
             qi.checkBag(goods);
         }catch(DangerException d) {
         d.toShow();
         }
    
     }
    }
    

    心得:这题就是让我们应用throw抛出异常,不让程序中断,让程序捕捉到危险品,再输出,所谓异常的生活应用,这题是有点难,好在上课拍了几张图片,还稳得住

    第八周课程总结

    异常的捕获及处理

    1.出现异常程序可以有三种处理方法 1、完全不处理 2、立即处理 3、延迟处理

    2.异常的概念:异常是导致程序中断运行的一种指令流,如果不对异常进行正确处理,则可能导致程序的中断执行

    3.exception 处理所有异常

    4.异常处理格式

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

    throws关键字

    1.用于方法定义位置,延迟方法处理

    2.throw关键字用法

      class Math{
     public int div(int i,int j)throws Exception{
     int temp=i/j;
     return temp;
    }
    }
    

    throw关键字

    1.中断,抛出异常,抛出时直接抛出异常的实例化对象

    2.throw关键字用法

      public class ThrowDemo01{
      public  static  void  main (string args[]){
      try{
          throw new Exception ("自己抛出异常!")                            
     }catch(Exception e)  {
      System.out.println(e);
      }
       }
       }
    

    exception类与runtimeexception类

    前者必须使用try-catch后者不使用try-catch处理异常产生由JVM虚拟机处理

    自定义异常类

    class  myException  extends Exception{
                 public   MyException(String msg){
                  super(msg)
    }
    }
    public class DefaultException
     public static void main(String[] args) {
     try{
         throw new  MyException("自定义异常。");
    
          }catch(Exception e);
    {
    System.out.println(e);
     }
    }
    }
    

    笔记

    字符串包装为整形

    int x=Integer.porseInt(arg[0])

    object的子类不是包含是扩展,子类功能更加丰富

    exception处理所有异常

    throws最多只能把异常抛到main方法那里

    throw不会单独使用

    remove 减少元素

    System.err.println 红色输出

  • 相关阅读:
    命令模式
    责任链模式
    代理模式
    享元模式
    195 Tenth Line
    test命令
    read命令
    echo命令
    java反射
    http状态码
  • 原文地址:https://www.cnblogs.com/1793979463hyx/p/11694369.html
Copyright © 2011-2022 走看看