美文网首页软件测试
java基础知识之异常

java基础知识之异常

作者: 明小五 | 来源:发表于2020-06-11 16:15 被阅读0次

    分类:Error 、Exception(error和exception都是继承自Throwable)
    Throwable类的方法
    getmessage():获取详细的异常描述信息
    getCause():获取发生异常的起因
    printStackTrace():打印异常发生时的方法调用栈信息

    一、Error

    一般是指与虚拟机(Java virtual machine )相关的严重问题,如系统崩溃,虚拟机错误,内存溢出等,这一类错误往往会导致应用程序直接中断,仅靠程序本身无法恢复和预防,并且遇到这种情况,建议直接中断。

    常见的Error
    1、NoSuchMethodError 没有此方法的错误
    2、OutOfMemoryError 内存溢出
    3、StackoverflowError 栈溢出的错误(栈也是内存中的一种)
    4、ThreadDeath 线程死锁

    二、Exception

    表示程序可以处理的异常情况,我们可以通过直接捕捉这些异常,使程序继续运行,也可以选择不处理,让程序终止,而不是随意让程序终止
    Java中的Exception分为了两类:
    1、编译时异常(检查性异常),直接继承自Exception
    2、运行时异常(非检查性异常),直接继承自RuntimeException

    编译时异常:编译器在代码编译的时候出现的异常
    运行时异常:编译时发现不了问题,但运行会报错

    常见的编译时异常
    1、ClassNotFoundException:找不到类
    2、IllegalAccessException:拒绝访问目标类
    3、InstantiationException:当试图使用Class类中的newInstance方法创建一个类的实例,目标类无法实例化
    4、NoSuchMethodException:请求方法不存在

    常见的运行时异常
    1、ArithmeticException:算术异常
    2、ArrayIndexOutOfBoundsException:数组下标越界
    3、NumberFormatException:数字格式异常
    4、NullpointerException:空指针异常
    5、indexOutOfBoundsException:索引下标越界
    6、ClassCastException:类转换异常

    三、异常处理机制

    1、异常直接抛出,给上一级调用者去处理,直到被处理,如果所有上级调用者都不处理就会java虚拟机处理。
    2、通过try....catch来捕捉处理异常,语法如下:

    try{
          //try块是指的受保护的代码,可能会抛出异常的代码。
    }catch(XXException e){
            //catch后面的小括号是抓取到的异常,这个异常可以被当做参数传入到catch块,catch块是抓取到异常后的处理逻辑,而处理逻辑一般是这么几种(做日志、将异常重新封装后抛出、其他逻辑)
    }
    

    四、自定义异常

    实现方式
    1、自定义一个编译性异常:继承于Exception
    2、自定义一个运行时异常:继承于RuntimeException
    3、覆盖掉父类或者超类的某些方法

    目的:为了重新给予更友好的错误提示
    1、自定义一个异常

    public class DivException extends RuntimeException {
        //无参构造函数
        public DivException(){
            super("接口请求出现异常");//默认提示
        }
        //用详细信息指定一个异常
        public DivException(String message){
            super(message);
        }
    }
    

    2、使用自定义的异常

    public class Caculater {
        public static void div(int a){
            if (a <= 0){
                throw new DivException("初始化数据不能小于0");
            }
        }
        public static void main(String [] args){
            Caculater.div(0);
        }
    

    运行结果:


    image.png

    相关文章

      网友评论

        本文标题:java基础知识之异常

        本文链接:https://www.haomeiwen.com/subject/suybtktx.html