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


    实验六 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 红色输出

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 传球游戏
    Java实现 蓝桥杯VIP 算法训练 Hanoi问题
    Java实现 蓝桥杯VIP 算法训练 蜜蜂飞舞
    Java实现 蓝桥杯VIP 算法训练 奇偶判断
    Java实现 蓝桥杯VIP 算法训练 传球游戏
    Java实现 蓝桥杯VIP 算法训练 Hanoi问题
    Java实现 蓝桥杯VIP 算法训练 Hanoi问题
    Java实现 蓝桥杯VIP 算法训练 蜜蜂飞舞
    Java实现 蓝桥杯VIP 算法训练 蜜蜂飞舞
    Qt: 访问容器(三种方法,加上for循环就四种了)good
  • 原文地址:https://www.cnblogs.com/1793979463hyx/p/11694369.html
Copyright © 2020-2023  润新知