软件测试

java基础知识之异常

2020-06-11  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读