【第二阶段:java基础】第11章:Exception异常(P442-P459)

news2024/12/22 23:29:22

本系列博客是韩顺平老师java基础课的课程笔记,B站:课程链接,吐血推荐的一套全网最细java教程,获益匪浅!

韩顺平P442-P459

  • 1. 异常的概念
  • 2. 常见的异常
    • 运行时异常
    • 编译异常
  • 3. 异常处理
    • 1️⃣try-catch-finally
    • 2️⃣throws
  • 4. 自定义异常
  • 5. throw和throws的区别

1. 异常的概念

  • 异常捕获:对异常进行捕获,保证程序可以继续运行

  • Java语言中,将程序执行中发生的不正常情况称为异常。(语法错误和逻辑错误不是异常)

  • 如果程序员认为一段代码可能出现异常/问题,可以使用try-catch异常处理机制来解决,从而保障程序的健壮性。如果进行异常处理,那么即使出现了异常,程序可以继续执行,而不是直接奔溃。

  • 执行过程中的异常事件分为两类

    • Error错误:Java虚拟机无法解决的严重错误,比如jvm系统内部错误,资源耗尽等严重情况,这是严重错误,程序会崩溃。
    • Exception异常:由于编程错误或偶然的外在因素导致的一般性问题,可以使用针对性代码进行处理。例如空指针访问,试图读取不存在的文件,网络连接中断等等。exception分为两大类:运行时异常和编译时异常
  • 🍓异常体系图

在这里插入图片描述

  • 运行时异常

    • 编译器检查不出来,一般是指编程时的逻辑错误,是程序员应该尽量避免出现的异常。
    • 对于运行时异常,可以不做处理,因为这类异常很普遍,若全处理可能会对程序的可读性和运行效率产生影响。
  • 编译时异常: 是编译器要求必须处置的异常

2. 常见的异常

运行时异常

  • NullPointerException空指针异常:当应用程序试图在需要对象的地方使用null时,抛出该异常
  • ArithmeticException数学运算异常:比如除以0时,抛出此类异常
  • ArrayIndexOutOfBoundException数组下标越界异常:用非法索引访问数组时抛出的异常。
  • ClassCastException类型转换异常:当试图将对象强制转换为不是实例的子类时,抛出异常
  • NumberFormatException数字格式不正确异常:当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出异常。(使用异常我们可以确保输入是满足条件的数字)

编译异常

  • SQLException:操作数据库时,查询表格可能发生异常
  • IO:操作文件时,发生的异常
  • FileNotFound:当操作一个不存在的文件时,发生异常
  • ClassNotFound:加载类,而该类不存在时候,发生异常
  • EOF:操作文件,到达文件末尾,发生异常
  • ILLegalArguement:参数异常

3. 异常处理

1️⃣try-catch-finally

  • 程序员在代码中捕获法发生的异常,自行处理
  • 在这里插入图片描述
  • 细节
    • 如果异常发生了,则try中异常后面的代码不会执行,直接进入到catch块

    • 如果异常没有发生,则顺序执行try的代码块,不会进入到catch

    • 如果希望不管是否发生异常,都执行某段代码(比如说关闭连接,释放资源等)这应该使用finally

    • finally是可以省略的,如果有finally,里面的东西一定要执行

    • 可以有多个catch语句,捕获不同的异常(进行不同的业务处理),要求父类异常在后,子类异常在前,比如Exception在后,NullPointerException在前,如果发生异常,只会匹配一个catch。

    • 在这里插入图片描述

    • 可以进行try-finally配合使用,这种用法相当于没有捕获异常,因此程序会直接崩掉/退出。应用场景:执行一段代码,不管是否发生异常,都必须执行某个业务逻辑。

    • 在这里插入图片描述

2️⃣throws

  • 将发生的异常抛出,交给调用者(方法)来处理,最顶级的处理者就是JVM
  • 基本介绍
    • 如果一个方法可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应显示地声明抛出异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理
    • 在方法声明中用throws语句可以声明抛出异常的列表,throws后面的异常类型可以是方法中产生的异常类型,也可以是他的父类。
      在这里插入图片描述
  • 细节
    • 对于编译异常,必须处理;对于运行异常,如果程序中没有显式地处理异常,默认是throws
    • 子类重写父类的方法时,对抛出异常的规定:子类重写的方法,所抛出的异常类型要么和父类抛出的异常一致,要么为父类抛出的异常的类型的子类型。
    • try-catch-finally和throws二选一
    • 在这里插入图片描述

4. 自定义异常

  • 基本概念

    • 当程序出现了某些“错误”,但该错误并没有在throwable子类中描述处理,这个时候可以自己设计异常类,用于描述该错误信息。
  • 步骤

    • 定义类:自定义异常类名继承Exception或者RuntimeException
    • 如果继承的是Exception,属于编译异常
    • 如果继承RuntimeException,属于运行异常(一般来说,继承RuntimeException)
    • 在这里插入图片描述

5. throw和throws的区别

在这里插入图片描述

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

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

相关文章

Java项目:SSM在线化妆品网站

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目为前后台项目,前台为普通用户登录,后台为管理员登录; 管理员角色包含以下功能: 管理员登…

Java入门笔记

目录Java入门笔记快捷键基础准备环境准备Java编译运行流程TODO自定义模板基础语法变量原理标识符标识符命名规则数据类型整数型浮点型类型转换引用数据类型面向对象类和对象判断一个对象是不是某个类方法传参可变参数基本数据类型传参字符串数据类型传参引用数据类型传参静态属…

MySQL索引事务——小记

文章目录索引概念page索引类型B树vsB树主键索引非聚簇索引覆盖索引复合索引/联合索引优化基于B树的索引hash索引事务事务的特性ACID问题隔离级别索引 概念 使用一定的数据结构,来保存索引字段(一列或多列)对应的数据。以后根据索引字段来检…

低代码常见场景【上】|如何解决业务问题

全文 2105 字 阅读时间约 7 分钟 首发于码匠技术博客 目录 低代码用例 用于解决业务问题的低代码用例 内部系统开发所面临的困境 低代码如何解决上述困境 关于码匠 低代码平台通过在开发和部署应用程序时最大限度地减少编程来减轻 IT 团队的压力,不仅可以帮助…

[附源码]Python计算机毕业设计Django农村人居环境治理监管系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Java+MySQL 基于Springboot的垃圾分类网站-计算机毕业设计

项目介绍 当前全球都在提倡环境保护,现在社会高速发展,我们每个人每天都会产生很多的垃圾,尤其是工业发展到一定阶段之后这些垃圾的种类也越来越多,如果随意丢弃很可能会造成环境污染,尤其是一些电池等重污染垃圾&…

前端模块化开发

1.模块化产生的背景 Javascript模块化编程,已经成为一个迫切的需求。理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块。 但是,Javascript不是一种模块化编程语言,它不支持"类&quo…

持续的敏捷转型--我们的经验

作者:Shalini Joshi、 Syed Tamkeen Banu 在这篇文章中,我们将分享自己的经验和教训,说明组织可能在哪些方面会失败,以及可以采取哪些积极措施。 一、简介 如今,大多数组织为了获取更快的交付、更高的商业价值和更好的…

Markdown使用模板

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

智能仓储机器人设计

目录 第一章 绪论 1 1.1 研究的背景与意义[1] 1 1.2 机器人的研究现状[4] 2 1.3机器人的发展趋势 4 1.4本文的主要研究内容 5 第二章 机器人总体方案设计 7 2.1 小型仓储机器人的功能 7 2.2 传感器系统[13] 7 2.3 移动载体 7 2.4 自由度与机器人的运作 8 2.5 控制方式的选择 9 …

Git使用及配置

一、下载安装 网上很多教程我就不出了,hh 二、配置 1.设置用户信息 //设置用户信息 git config --global user.name"xxx" git config --global user.email"xxxxx.xxx" 三、获取本地仓库 1.在电脑上创建一个空目录作为本地Git仓库 2.进入这…

【Redis】初识Redis

1.初识Redis1.1安装1.2数据结构1.2.1 通用命令1.2.2 String类型key的结构1.2.3 Hash类型2.Jedis2.1 添加依赖及配置2.2 配置StringRedisTemplte1.初识Redis Redis是一个基于内存的键值型NoSQL数据库。其具有性能优越、持久化的特点,能够支持每秒十几万次的读写操作…

前端面试题之【HTTP/HTML/浏览器】

1.说一下http与https http:超文本传输协议,https:超文本传输安全协议 区别: http传输数据是未加密的,是明文传输;https使用ssl协议对数据进行加密处理;https协议需要ca证书,费用高…

【VUE 嵌套路由】

目录 1. 嵌套路由 2. 通俗小结 1. 嵌套路由 要使用菜单显示出“点击不同的菜单项显示不同的内容”的效果&#xff0c;需要使用嵌套路由&#xff01; 因为&#xff0c;在当前设计中&#xff0c;App.vue是显示整个页面的入口&#xff0c;而App.vue就已经使用<router-view/…

应急物资仓库管理系统-3D可视化管理系统

1. 系统介绍 RFID智慧应急物资仓库可视化管理系统是杭州东识科技有限公司基于物联网RFID技术、云计算技术、3D可视化技术、数据采集技术等&#xff0c;专门为政府、军队等部门量身定制的一体化物资综合管理平台。 本系统包括&#xff1a;物资安全监控部分——提供对环境温湿度监…

[附源码]Python计算机毕业设计Django失物招领微信小程序论文

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Slowloris DoS攻击的原理与简单实现

前言 Slowloris 攻击是我在李华峰老师的书——《Metasploit Web 渗透测试实战》里面看的&#xff0c;感觉既简单又使用&#xff0c;现在这种攻击是很容易被防护的啦。不过我也不敢真刀实战的去试&#xff0c;只是拿个靶机玩玩罢了。 废话还是写在结语里面吧。&#xff08;划掉&…

Java 中重写了 equals 为什么还要重写 hashCode?

问题 不管是在书本或者是博客上&#xff0c;都会推荐我们在重写 equals 方法时重写 hashCode 方法。明明对象之间就是通过 equals 方法进行判断的&#xff0c;那么为什么非要写 hashCode 方法呢? equals 实验 创建一个 Teacher 类。方便起见&#xff0c;就一个 name 属性。…

1.1 异步相关概念:初步了解

1.进程和线程的概念 计算机有5大基本组成部分&#xff0c;运算器&#xff0c;控制器&#xff0c;存储器&#xff0c;输入和输出。运算器和控制器封装到一起&#xff0c;加上寄存器组和cpu内部总线构成中央处理器&#xff08;CPU&#xff09;。cpu的根本任务&#xff0c;就是执…

2022年跨境电商卖家如何在Facebook上做广告【完整指南】

关键词&#xff1a;跨境电商卖家、Facebook广告 了解如何在 Facebook 上做广告对于大多数跨境电商卖家来说是一项非常重要的技能&#xff0c;因为您在 Facebook 上做广告&#xff0c;您的广告可以覆盖21.7 亿人——换句话说&#xff0c;接近世界人口的 30%。此外&#xff0c;该…