我们来捋一捋JAVA的异常

这些错误靠我们**程序本身是无法处理与预防的**,遇到了建议直接程序中止、重启。

Exception:程序可以处理的异常,捕获后可处理。

Exception异常是程序能够捕获的,也可以做异常处理,我们要尽可能的去处理,使程序继续运行,而不是中止程序。

总结一下就是Error是程序无法处理的错误,Exception是可以处理的异常。

RuntimeException与否区别

图片
上图中Exception有两种类型的异常,我们来看一下
RuntimeException:不可预知的,程序应当自行避免

何为不可预知?如:数组下标越界,访问对象空指针等,这种异常是我们小伙伴们在编写程序时要尽量避免。也就是我们程序员是能够避免的
如针对空指针异常,我们应该在编程的时候,加上空指针判断,if(obj == null) 如何如何,这样就避免了空指针异常。

非RuntimeException:可预知的,编译器可检查的异常

可预知,如:在我们打开一个文件时,如文件不存在引用的异常。
这种异常编译器会检查出来,必须需要处理的
这个也称之为Checked Exception异常类型

责任归属

我们从责任角度看

1、Error属于JVM需要承担的责任
2、RuntimeException是程序应该承担的责任
3、非RuntimeException(CheckedException)可检查异常是JAVA编译器应该承担的责任

上面代码直观一点:
图片
我们看到Error和RuntimeException编译器是不检查的,而CheckedExcepton异常编译器是检查的,也就是我们程序员是必须要捕获处理的。那怎么处理呢?
1、try-catch方式图片

用try-catch方式捕获这个异常,可以在catch代码段进行异常逻辑处理,这个就按照实际业务而定。如上图代码是FileNotFound异常,根据这个类型我们就知道是文件句柄不存在,那我们应该做哪些处理。如:提示一下用户该文件不存在

2、上抛异常方式
在复杂的业务中,我们的程序员自己写的模块,很有可能被其他程序员写的模块进行引用,为了能够让其他程序员知道我们模块的异常,并要他们要进行处理,我们就可以采用上抛异常方式图片
我们看一下上层调用的处理

图片
我们看到上抛异常,是需要调用方进行处理的。那处理的方式是什么呢?其实就是上面讲的try-catch或继续上抛。

常见的Error和Exception

一、RuntimeException

1、NullPointerException - 空指针引用异常
2、ClassCastException - 类型强制转换异常
3、IllegalArgumentException - 传递非法参数异常
4、IndexOutOfBoundsException - 下标越界异常
5、NumberFormatException - 数字格式异常

二、非RuntimeException

1、ClassNotFoundException - 找不到指定class异常
2、IOException - IO操作异常

三、Error

1、NoClassDefFoundError - 找不到class定义的异常
2、StackOverflowError - 深递归导致栈被耗尽抛出的异常

最后

由于篇幅原因,就不多做展示了
9743)]

[外链图片转存中…(img-1pzlJt0M-1720108249744)]

由于篇幅原因,就不多做展示了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值