zoukankan      html  css  js  c++  java
  • Java的异常

    1、异常:
    (1)错误:
    错误是绝症,只能修改代码;
    (2)异常
    编译时期异常Exception是小病,可以处理;
    运行时期异常RuntimeException不能处理,也需要修改代码;

    package com.oracle.demo01;
    //错误:绝症(只能修改代码)
    //异常:编译时期异常Exception 小病(可以处理);运行时期异常RuntimeException不能处理
    public class demo01 {
    
        public static void main(String[] args) {
            //数组长度过大,会产生内存溢出错误
            //int[] arr = new int[999999999];
            int[] arr = new int[999];
            //异常
            int[] arr1 = new int[5];
            int i = get(arr1);
            System.out.println(i);
        }
        public static  int  get(int[] arr){
            int i = arr[5];
            return i;
        }
    }

    效果如下:

    (3)throw new Exception();抛出异常对象;
    throws Exception;抛出异常类;
    (4)try{可能会发生异常的语句
    }catch(可能会发生异常的类名 变量名){
    异常的处理方式
    }finally{
    不管发不发生异常都会执行的语句
    释放资源的语句
    }

    package com.oracle.demo01;
    /*try{
        可能会发生异常的语句
    }catch(可能会发生异常的类名 变量名){
        异常的处理方式
    }finally{
        不管发不发生异常都会执行的语句
        释放资源的语句
    }*/
    public class demo02 {
    
        public static void main(String[] args) {
            int[] arr = {1,2,2,2};
            try{
                int i = get(arr);
                System.out.println(i);
            }catch(NullPointerException ex){
                System.out.println(ex);
            }catch(ArrayIndexOutOfBoundsException ex){
                System.out.println(ex);
            }finally{
                System.out.println("finally执行语句");
            }
            System.out.println("你好呀");
        }
        public static int get(int[] arr) {
            if(arr == null){
                throw new NullPointerException("数组为空");
            }
            if(arr.length == 0){
                throw new ArrayIndexOutOfBoundsException("数组长度为零");
            }
            int i = arr[arr.length-1];
            return i;
        }
    }

     效果如下:

    (5)对于RuntimeException运行时期异常:不需要throws,也不需要try,catch处理
    一旦出现,程序员修改代码;
    对于编译时期异常Exception及Exception的子类(不包括RuntimeException)
    2种处理方式:一个throws,一个是try/catch

    package com.oracle.demo02;
    //RuntimeException运行时期异常:不需要throws,也不需要try,catch处理
    //                    一旦出现,程序员修改代码;
    //对于编译时期异常Exception及Exception的子类(不包括RuntimeException)
    //        2种处理方式:一个throws,一个是try/catch
    public class demo01 {
            public static void main(String[] args) {
                int[]  arr = null;
                try {
                    System.out.println(get2(arr));
                } catch (Exception e) {
                    System.out.println(e.getMessage());
                }
            }
            public static  int get(int[] arr){
                if(arr == null){
                    throw  new  NullPointerException("数组为空");
                }
                return arr[1];
            }
            public static  int get2(int[] arr) throws Exception {
                if(arr == null){
                    throw  new  Exception("数组为空");
                }
                return arr[1];
            }
    }

    效果如下:

    (6)1当父类方法有异常时,子类继承重写后可以不抛异常,
    也可以抛异常,该异常不得超过父类异常
    2当父类方法没有异常,子类重写该方法不得抛出异常
    如果该方法调用了一个抛出编译异常的方法,只能try,catch;

    package com.oracle.demo02;
    //1当父类方法有异常时,子类继承重写后可以不抛异常,
    //也可以抛异常,该异常不得超过父类异常
    //2当父类方法没有异常,子类重写该方法不得抛出异常
                                   //如果该方法调用了一个抛出编译异常的方法,只能try,catch;
    import java.text.ParseException;
    
    public class fu {
            public  void f() throws ParseException{}
            //重载不会
            public void  f(String a){};
    }
    class  zi  extends  fu{
        public void f(){
            try {
                z();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        };
        public void z() throws Exception{} 
    }
  • 相关阅读:
    Ajax调用 打不开新窗口
    杂记3
    todo WebClient学习
    Repeater 嵌套
    动态生成数个gridview Button得到隐藏ID列的值
    SQL 查询间隔时间大于60s的所有数据
    Apache DbUtils
    一步步学Mybatis-告别繁琐的配置之Mybatis配置文件生成工具 (7)
    一步步学Mybatis-怎么样实现动态SQL查询(6)
    一步步学Mybatis-实现简单的分页效果逻辑 (5)
  • 原文地址:https://www.cnblogs.com/scw123/p/9801820.html
Copyright © 2011-2022 走看看