Exception和Error有什么区别?

Exception和Error都是继承了Throwable类,在java中只有Throwable类型的实例才可以被抛出(throw)或者捕获 (catch),他是异常处理机制的基本组成类型。

Exception和Error体现了java对不同异常情况的分类。Exception是程序正常运行中,可以预料的意外情况,可能并且应该被捕获,进行相应处理。

Error是指在正常情况下,不大可能出现的情况,绝大多数Error都会导致程序处于非正常的、不可被恢复的状态。因为是非正常情况,所以不便于也不需要捕获,比如OutOfMemoryError都是Error的子类。

Exception又分为可检查异常(checked)和不检查异常(Unchecked),不检查异常就是所谓的运行时异常,类似NullPointerException、ArrayIndexOutOfBoundsException之类,通常是可以编码避免的逻辑错误、具体根据需要来判断是否需要捕获,并不会在编译期强制要求。

Exception中RuntimeException子类就是程序自身的错误,非RuntimeException外界相关的异常。

异常的处理:

try-catch-finally:一种保护代码正常运行的机制
try···catch(catch可以有多个)
try···catch···finally
try···finally
try必须有,catch和finally至少有一个
try:正常业务逻辑代码
catch:当try发生异常,将执行catch代码,若无异常,绕之
finally:当try或catch执行结束后,必须要执行finally
catch块可以有多个,每个有不同的入口形参,当已发生的异常和某一个catch中的形参类型一样,那么将执行该catch中的代码,如果没有一个匹配,catch将不会被触发,最后进入finally。进入catch后,并不会返回到try发生异常的位置,也不会执行后续的catch块,一个异常只能进入一个catch块。catch从上到下依次匹配。小异常写在前面大异常写在末尾。

try结构中,如果有finally,finally肯定会执行。
try-catch-finally内部里面也会发生异常,所以也可以在内部写一个完整的try结构。

throws来声明异常,抛出异常采用throw(在内部类中)关键字。
调用带有throws异常方法:要么处理,要么继续向外throws。
一个方法被覆盖,覆盖他的方法必须抛出相同的异常,或者异常的子类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值