欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java se异常笔记

程序员文章站 2022-06-09 20:06:20
...

Java se异常笔记

异常:是在运行时发生不正常情况.

在java中用类的形式对不正常情况进行了描述和封装对象.
描述不正常的情况的类,就是异常类.
以前正常流程代码和问题处理代码相结合。提高阅读性.
现在将正常流程代码和问题处理代码分离.

其实异常就是java通过面向对象的思想将问题封装成了对象.

用异常类对其进行描述.
不同的问题用不同的类进行具体的代码描述,比喻角标越界等.

问题很多,意味着描述的类很多.
将其共性进行向上抽取,形成了异常体系.

代码示例一:

//最终问题(不正常情况)就分为两大类
/*Throwable:无论error还是异常,问题,问题发生就应该可以抛出,让调用者知道并处理。
 * 该体系的特点就在于Throwable及所有的子类都具有可抛性
 * 具体通过两个关键字来体现的
 * throws throw ,凡是可以被这两个关键字所操作的类和对象都具有可抛性
 *      |--1,一般不可处理的。Error
 *      |--2,可以处理的。Exception
 * 
*/
class Test{
    public static void main(String[] args){
        int[] arr = new int[3];
        arr = null;
        //System.out.println(arr[3]);
        sleep(-5);
    }
    public static void sleep(int time){
        if(time<0){
            new FuTime();//就是时间为负的情况
        }
        if(time>1000000){
            new BigTime();
        }
        System.out.println("我睡。。。"+time);
    }
}
class FuTime{

}
class BigTime{

}

输出结果:

我睡。。。-5

代码示例二:

class Demo{
    public int method(int [] arr,int index){
        if(arr==null){
            throw new NullPointerException("数组的引用不能为空");
        }
        if(index>=arr.length){
            throw new ArrayIndexOutOfBoundsException("数组角标越界了:"+index);
        }
        if(index<0){
            throw new ArrayIndexOutOfBoundsException("数组角标不能为负数:"+index);
        }
        return arr[index];
    }
}
class Test2 {
        public static void main(String[] args){
            int[] arr = new int[3];

            Demo d = new Demo();
            int num = d.method(null, 30);
            System.out.println("num"+num);
            System.out.println("Over");
        }
}

输出结果:

Exception in thread “main” java.lang.NullPointerException: 数组的引用不能为空
at Demo.method(Test2.java:4)
at Test2.main(Test2.java:20)