JAVA基础(JAVA SE)学习笔记(九)异常处理

 前言 

1. 学习视频:

尚硅谷Java零基础全套视频教程(宋红康2023版,java入门自学必备)_哔哩哔哩_bilibili

2023最新Java学习路线 - 哔哩哔哩

第三阶段:Java高级应用

9.异常处理

10.多线程

11.常用类和基础API

12.集合框架

13.泛型

14.数据结构与集合源码

15.File类与IO流

16.网络编程

17.反射机制

18.JDK8、17 新特性

正文

9.异常处理

9.1异常的理解、体系结构

JAVA基础(JAVA SE)学习笔记(九)异常处理_第1张图片

JAVA基础(JAVA SE)学习笔记(九)异常处理_第2张图片

JAVA基础(JAVA SE)学习笔记(九)异常处理_第3张图片

JAVA基础(JAVA SE)学习笔记(九)异常处理_第4张图片

栈内存溢出:循环递归没有出口,一直自我调用,导致栈内存满了,就溢出了。

堆内存溢出:堆初始化时 设置的存储空间大小 比 向里面存储的内容小,就会溢出。

JAVA基础(JAVA SE)学习笔记(九)异常处理_第5张图片

JAVA基础(JAVA SE)学习笔记(九)异常处理_第6张图片

JAVA基础(JAVA SE)学习笔记(九)异常处理_第7张图片

JAVA基础(JAVA SE)学习笔记(九)异常处理_第8张图片

9.2 常见的异常

JAVA基础——常见异常

JAVA基础(JAVA SE)学习笔记(九)异常处理_第9张图片

高级异常JVM异常,要学习JVM相关知识

9.3 处理异常

JAVA基础(JAVA SE)学习笔记(九)异常处理_第10张图片

9.3.1 捕获异常(try-catch-finally)  (抓抛模型)  (处理运行时异常)

JAVA基础(JAVA SE)学习笔记(九)异常处理_第11张图片JAVA基础(JAVA SE)学习笔记(九)异常处理_第12张图片JAVA基础(JAVA SE)学习笔记(九)异常处理_第13张图片

JAVA基础(JAVA SE)学习笔记(九)异常处理_第14张图片

finally的使用:

JAVA基础(JAVA SE)学习笔记(九)异常处理_第15张图片

JAVA基础(JAVA SE)学习笔记(九)异常处理_第16张图片

JAVA基础(JAVA SE)学习笔记(九)异常处理_第17张图片

JAVA基础(JAVA SE)学习笔记(九)异常处理_第18张图片

final、finally、finalize的区别:

        1、final修饰符(关键字)。被final修饰的,就意味着不能再派生出新的子类,不能作为父类而被子类继承。因此一个类不能既被abstract声明,又被final声明。将变量或方法声明为final,可以保证他们在使用的过程中不被修改。被声明为final的变量必须在声明时给出变量的初始值,而在以后的引用中只能读取。被final声明的方法也同样只能使用,即不能方法重写

        2、finally是在异常处理时提供finally块来执行任何清除操作。不管有没有异常被抛出、捕获,finally块都会被执行。try块中的内容是在无异常时执行到结束。catch块中的内容,是在try块内容发生catch所声明的异常时,跳转到catch块中执行。finally块则是无论异常是否发生,都会执行finally块的内容,所以在代码逻辑中有需要无论发生什么都必须执行的代码,就可以放在finally块中。

        3、finalize是方法名。java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者被执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。 

9.3.2 抛出异常 (throws+异常类型) (处理编译时异常)

JAVA基础(JAVA SE)学习笔记(九)异常处理_第19张图片

抛出方法异常(暂时不处理),后续调用这个方法的时候还会爆出编译异常,只要调用,就会异常。

JAVA基础(JAVA SE)学习笔记(九)异常处理_第20张图片

JAVA基础(JAVA SE)学习笔记(九)异常处理_第21张图片JAVA基础(JAVA SE)学习笔记(九)异常处理_第22张图片

9.3.3 异常处理方式的选择:

JAVA基础(JAVA SE)学习笔记(九)异常处理_第23张图片

9.3.4 手动抛(throw + 异常类型的对象)  (不满足具体场景的开发问题,不满足某一类异常)

异常类的对象:可以是编译时异常,也可以是运行时异常,还可以是他们的子类。

抛出运行时异常,可以处理,可以不处理。如下:

JAVA基础(JAVA SE)学习笔记(九)异常处理_第24张图片JAVA基础(JAVA SE)学习笔记(九)异常处理_第25张图片

抛出编译异常,必须要处理:在调用者main方法使用try...catch 或 在本方法声明的位置中使用throws。

JAVA基础(JAVA SE)学习笔记(九)异常处理_第26张图片

抛出异常之后,这个方法就不继续向后执行了,只是把异常抛给了调用者。

throw 和 throws 的区别:

        throw:使用在方法内部,后面加异常处理的对象,表示不满足指定异常类型,但是手动抛出指定的一个异常对象。是一个产生异常对象的方式。抛运行时异常可以不处理,抛编译异常必须处理。

        throws:使用在方法的声明的位置,把产生的异常对象继续向上一层调用此方法的对象抛出。属于异常处理的方式之一。到main方法必须要处理throws的异常,不能再继续向上抛异常。

9.3.5 自定义异常类型

        我们发现,Exception中继承异常父类对应的根父类Throwable。然后有几个不同参数类型或参数个数的重载的构造器。那么,我们可以参照这个,写我们自定义的异常类:

        新建一个异常类,然后让他继承一个异常类型。(Exception中,除了RuntimeException运行时异常以外,其他都是编译时异常。所以可以继承Exception或RuntimeException)。写上序列版本号,再写几个重载的构造器。

JAVA基础(JAVA SE)学习笔记(九)异常处理_第27张图片JAVA基础(JAVA SE)学习笔记(九)异常处理_第28张图片

JAVA基础(JAVA SE)学习笔记(九)异常处理_第29张图片

JAVA基础(JAVA SE)学习笔记(九)异常处理_第30张图片

自定义异常类型举例:

JAVA基础(JAVA SE)学习笔记(九)异常处理_第31张图片

JAVA基础(JAVA SE)学习笔记(九)异常处理_第32张图片

JAVA基础(JAVA SE)学习笔记(九)异常处理_第33张图片

JAVA基础(JAVA SE)学习笔记(九)异常处理_第34张图片JAVA基础(JAVA SE)学习笔记(九)异常处理_第35张图片

你可能感兴趣的:(Java基础,java)