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异常的理解、体系结构

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

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

9.2 常见的异常

JAVA基础——常见异常

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

9.3 处理异常

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

finally的使用:

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+异常类型) (处理编译时异常)

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

9.3.3 异常处理方式的选择:

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

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

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

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

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

throw 和 throws 的区别:

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

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

9.3.5 自定义异常类型

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

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

自定义异常类型举例:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/119579.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟机VMware Workstation Pro安装配置使用服务器系统ubuntu-22.04.3-live-server-amd64.iso

虚拟机里安装ubuntu-23.04-beta-desktop-amd64开启SSH(换源和备份)配置中文以及中文输入法等 ​一、获取Ubuntu服务器版 获取Ubuntu服务器版 二、配置虚拟机 选择Custom(advanced): 选择Workstation 17.x: 选择“I will install the operating system later.”…

原型制作的软件 Experience Design mac( XD ) 中文版软件特色

​XD是一个直观、功能强大的UI/UX开发工具,旨在设计、原型、用户之间共享材料以及通过数字技术进行设计交互。Adobe XD提供了开发网站、应用程序、语音界面、游戏界面、电子邮件模板等所需的一切。xd mac软件特色 体验设计的未来。 使用 Adobe XD 中快速直观、即取即…

上市公司员工及工资数据(2000-2022年)

参照《经济研究》中毛其淋等(2023)的做法,团队对上市公司员工、工资数据测算。用上市公司i在t年的员工人数的对数衡量企业的就业水平,采用企业应付职工薪酬与员工人数的比值衡量企业工资水平 一、数据介绍 …

计算机网络原理

2015-04 40.简述面向连接服务的特点。 答:面向连接服务的特点是:数据传输过程前必须经过建立连接,维护连接和释放连接三个过程;数据传输过程中,各分组不需要携带目的节点的地址;面向连接数据传…

html内连框架

src:引用页面地址 name&#xff1a;框架标识名称 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <!--iframe src&#xff1a;地址 w-h&#xff…

点云处理【七】(点云配准)

点云处理 第一章 点云数据采集 1.点云配准 点云配准是将两个或多个点云数据集融合到一个统一的坐标系统中的过程。这通常是为了创建一个完整的模型或融合从不同视角采集的数据。 点云配准一般分为粗配准和精配准&#xff0c;粗配准指的是在两幅点云之间的变换完全未知的情况下…

数组知识点以及leetcode刷题

数组 二分查找 题目 力扣题目链接 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。 适用范围 数组有序&#xff0c;数…

【LeetCode】881 救生艇 中等题

给定数组 people 。people[i]表示第 i 个人的体重 &#xff0c;船的数量不限&#xff0c;每艘船可以承载的最大重量为 limit。 每艘船最多可同时载两人&#xff0c;但条件是这些人的重量之和最多为 limit。 返回 承载所有人所需的最小船数 。 示例 1&#xff1a; 输入&#…

【Python机器学习】零基础掌握BaggingRegressor集成学习

如何提升回归模型的稳定性和准确性? 在实际生活中,比如房价预测,经常会遇到一种情况:有大量的特征和样本数据,但模型的预测准确度仍然不尽人意。这时候,单一的模型(如支持向量机回归)可能表现得并不够好。 考虑到这个问题,解决方案可能是使用集成方法,特别是Baggin…

系统架构师论文总结【持续更新】

系统架构师考试是对计算机从业人员&#xff0c;以考代评的重要考试&#xff0c;近几年一直在参加考试&#xff0c;屡战屡败&#xff0c;后又屡败屡战&#xff0c;记录总结论文相关的知识点&#xff0c;方便考前查看。 一、2010年论文 1&#xff09;论软件的静态演化和动态演化…

【C++ 学习】库文件和头文件编写

库文件和头文件编写 有时候&#xff0c;通过C编写的代码并不一定是直接在自己的控制台文件调用&#xff0c;而是需要在其他程序中调用编写的算法的接口即可。这个时候&#xff0c;可以把自己编写的代码打包成一个库&#xff08;Library&#xff09;&#xff0c;编译后被其他程…

宝塔Python3.7安装模块报错ModuleNotFoundError: No module named ‘Crypto‘解决办法

前言 今晚遇到一个问题&#xff0c;宝塔服务器上安装脚本的模块时&#xff0c;出现以下报错&#xff0c;这里找到了解决办法 Traceback (most recent call last):File "/www/wwwroot/unifysign/fuck_chaoxing/fuck_xxt.py", line 4, in <module>from Crypto.…

[SQL开发笔记]BETWEEN操作符:选取介于两个值之间的数据范围内的值

一、功能描述&#xff1a; BETWEEN操作符&#xff1a;选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。 二、BETWEEN操作符语法详解&#xff1a; BETWEEN操作符语法&#xff1a; SELECT column1, column2,…FROM table_nameWHERE column BETWEEN val…

基于aop 代理 Sentinel Nacos配置控制包装类实现原理

基于aop & 代理 & Sentinel & Nacos配置控制包装类实现原理 Hi&#xff0c;我是阿昌&#xff0c;今天记录下看sentinel源码结合业务实现的思路基于aop & 代理 & Sentinel & Nacos配置控制包装类实现原理&#xff1b;下面并不会手把手的记录方案的实现…

Redis | 数据结构(02)SDS

一、键值对数据库是怎么实现的&#xff1f; 在开始讲数据结构之前&#xff0c;先给介绍下 Redis 是怎样实现键值对&#xff08;key-value&#xff09;数据库的。 Redis 的键值对中的 key 就是字符串对象&#xff0c;而 value 可以是字符串对象&#xff0c;也可以是集合数据类型…

分享一个用HTML、CSS和jQuery构建的漂亮的登录注册界面

作为一个前端开发人员&#xff0c;我们经常需要构建用户的登录和注册界面。一个漂亮、用户友好的登录注册界面对于提升用户体验和网站形象至关重要。以下我们使用HTML、CSS和jQuery来做一个漂亮的登录注册界面。 首先&#xff0c;我们需要创建一个html文档&#xff0c;定义登录…

【算法练习Day29】柠檬水找零根据身高重建队列用最少数量的箭引爆气球

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 柠檬水找零根据身高重建队列…

【数据结构】ST 表与 RMQ 算法

本文参考【朝夕的ACM笔记】数据结构-ST表 在练习线段树的过程中经常会感叹代码怎么这么长啊啊啊懒标记怎么这么难传啊啊啊 于是在得知有一种代码量远小于线段树的算法时、、、&#xff08;其实是因为做到了[SCOI2007] 降雨量 就是ST表啦~ 在什么情况下可以用ST表代替线段树…

Web进阶

身份认证 当我们在使用互联网时&#xff0c;经常会遇到一些需要身份验证或者保持用户状态的情况。为了实现这些功能&#xff0c;常用的方法有使用cookie、session和token。 Cookie&#xff08;HTTP Cookie&#xff09;&#xff1a; Cookie是服务器发送到用户浏览器并保存在用户…

STM32-LCD中英文显示及应用

目录 字符编码 ASCII码&#xff08;8位&#xff09; 中文编码&#xff08;16位&#xff09; GB2312标准 GBK编码 GB18030标准&#xff08;32位&#xff09; Big5编码 Unicode字符集和编码 UTF-32&#xff08;32位&#xff09; UTF-16&#xff08;16位/32位&#xff0…