java-异常(笔记)
一.Throwable:
Throwable类是所有错误和异常的祖宗类
Error:出现Error的情况一般来说Java程序是无能为力的。
异常类:
检查异常:指的是编译期间就必须处理的,否则程序不能通过编译,更不能正常运行。
RuntimeException:
RuntimeException及其子类是非受检异常,编译期间是不需要检查的,出现问题需要回来修改代码。
例子:
arr[3]编译时候没有异常,但是溢出需要回来改代码。
小结:
二.JVM的默认处理方案
例子:
只输出了开始和异常信息,没有输出结束
三.异常处理
为什么学习自己处理异常: 因为java虚拟机的默认方案会让程序在出现问题的地方直接结束,而在实际开发中,程序某一个地方出问题了不应该影响后续的执行。
(1)try…catch…
四.Throwable的成员方法
(1)public void printStackTrace()
程序会在出现异常的地方new一个异常类的对象,然后被Java的运行时系统拿去和catch里的匹配,匹配上了就把new的对象赋值给e,那么e就是一个对象了,对象可以调方法。
返回异常的原因异常的类名以及位置信息。
(2)public String getMessage()
返回出现异常的原因
底层:
(3)public String toString()
返回的是异常原因以及异常类名。
五.编译时异常和运行时异常
(1)编译时异常
编译时异常是可能出现异常而不是一定出现异常,可以用try…catch解决
六.throws处理异常
例子(运行时异常):
只输出了开始没有输出结束,说明throws并不是真正的处理异常,他仅仅是把异常抛出,如果想让程序继续往下执行,还得用try…catch…
例子(编译时异常):
先把异常抛出去但是要是用这个方法的话还是要进行处理。
总结:
七.自定义异常
为什么自定义异常:虽然java提供很多异常类供我们使用,但是在实际开发中这些远远不够使用,比如说得分为0到一百分,java是并不知道的。
让我们的类继承自Exception或者继承自RuntimeException,那么我们的类就成为异常体系的一员
先创建一个无参构造方法,再创建一个带参构造方法,super将message返回给他的父类
跟进到父类查看:
再跟进:
detailMessage是Throwable中的一个成员变量,可以用 printStackTrace()这个方法获取到。
throw可以在方法体内部抛出异常,以为是自定义的所以要手动去抛。
因为自定义的异常是一个编译时异常,所以还要用throws抛出异常
否则无法通过编译
本文地址:https://blog.csdn.net/weixin_49053303/article/details/112217578