对异常的一些收获

目录

1、异常的概念以及结构体系

2、异常的分类

2.1、编译时的异常

2.2、运行时异常

3、防御式编程

4、异常的抛出

​编辑

5、try-catch捕获并处理

6、自定义异常类


1、异常的概念以及结构体系

异常:在Java中,将程序执行的过程中发生的不正常行为称为异常。

我们可以通过这一张图来了解关于异常类的关系,这里我们可以看到:

Throwable:是异常体系里面最高的一层类,其派生出两个之类,Error和Exception

Error:是指Java虚拟机中无法解决的严重问题,比如:JVM的内部错误,资源耗尽等,典型代表:StackOverflowError和OutOfMemoryError,一旦发生就很难解决

Exception:异常产生后程序员可以通过代码进行处理,使程序继续执行。

2、异常的分类

异常可以分为编译时异常和运行时异常

2.1、编译时的异常

这就是在编译时的异常,要想让它支持深拷贝,只需要覆写Object类中的clone()方法即可。

2.2、运行时异常

运行时异常,顾名思义就是程序在执行期间发生异常,也被称为非检查异常

RuntimeException以及子类对应的异常都称为运行时异常。

3、防御式编程

第一种,LBYL:look Before You Leap. 在操作前就进行准备防御,也被称为事前防御型

但是会看起来有点杂乱

当我们这样就是进行了,在开始操作前就进行了用户名以及密码的检查。

第二种,EAFP:It's Easier to Ask Forgiveness than Permission . 也就是先操作,遇到问题再处理,也被称为事后认错型

try{
             用户名验证();
             密码验证();
        }catch (用户名验证异常){
            处理用户名验证异常;
        }catch(密码验证异常){
            处理密码验证异常;
        }

好处就是,正常流程与错误流程分离开的,代码更清晰,容易理解代码。

在Java中异常处理主要就是五个关键字:throw,try,catch,final,throws

4、异常的抛出

在编写程序时,如果程序中出现错误,此时就需要将错误的信息告知给调用者,比如:参数检测。

在java中,可以借助throw关键字,抛出一个指定异常对象,将错误信息告知给调用者。

throw new XXXException("异常产生的原因");

我们可以看到异常处理抛出来的信息是,数组下标越界了。

5、try-catch捕获并处理

当我们对这个进行使用try-catch进行捕获处理,发生了报错

这里无论是说明异常都会被exception捕获,那么也就不会被后面的NullPointerException捕获,所以通常这样的写法是错误的。

而当我们这样写,编译时就不会报错,因为这样的错误会先被NullPointerException捕获,如果处理不了,就会被Exception捕获

6、自定义异常类

这就是我们自定义的异常类,我们可以看到,这里面的自定义异常类,都需要继承Exception或者RuntimeException,然后再进行构造方法,这里面有个参数message,含义:出现异常的原因,也就是我们需要将出现异常的原因传入这个参数里面去。

ok了,这就是我对异常的一些理解了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值