【11-Ⅱ】Head First Java 学习笔记

news2025/1/13 17:49:06

HeadFirst Java

本人有C语言基础,通过阅读Java廖雪峰网站,简单速成了java,但对其中一些入门概念有所疏漏,阅读本书以弥补。

第一章 Java入门
第二章 面向对象
第三章 变量
第四章 方法操作实例变量
第五章 程序实战
第六章 Java函数库
第七章 继承与多态
第八章 深入多态
第九章 构造器与垃圾收集器
第十章 数字与静态
第十一章 异常处理


前言

七八九章是Java中较新的知识点,这部分也是区别于C比较有趣的地方!建议大家多多回顾。不多废话,我们进入今天的正题。异常处理,也是Java中比较新的内容。
啥是异常?程序出现异常情况呗!你在想不对啊,编译器不是已经保证程序的正确性了吗?其实通过前文的学习我们知道,编译器保证的是编译期的一些安全问题,比如类型安全问题。在JVM运行期,还是会有其他错误、异常的。有些错误异常来自程序错误,在开发阶段我们就可以避免(数组越界),有些则得编写异常处理程序,比如预期某些文件在特定目录,但实际执行时,又找不到文件?

异常处理说的是:我们无法保证程序不会有异常,当在编写可能有异常的方法时,我们需要有处理异常状况的程序。接下来通过创建一个MIDI音乐播放器来介绍这一部分。这一直涉及到本章与后续两章内容!当然对于这一部分,我并不重点学习,对于本书,更侧重Java基础的学习,项目相关的API只做了解。
本章分为两小节介绍~
以下是第二小节。

try/catch块

调用风险方法时,需要在try中调用,且方法若没有成功执行,即执行过程中一旦抛出异常,调用方会马上捕捉,并跳转到调用方catch块。
在这里插入图片描述

finally块

  • 无论如何都会执行的部分,即将重要的清理程序部分集中在该块中,不用在try\catch中重复写
  • 如果try或catch有return指令,finally还是会执行,流程会先跳到finally再回到return指令!

练习:
如果String test=“yes”;如何输出呢?
在这里插入图片描述

处理多重异常

方法可以抛出多个异常,声明也必须含有全部可能的异常。(逗号分割;有共同父类的,声明父类即可)

异常是多态的

异常也是对象,只是可以被抛出。所以异常也可以通过多态方式引用!

  • 方法只需要声明父类
  • catch块不用对每个做处理,只要少数catch即可处理所有异常

注意catch块的顺序!不能把大篮子放在前面!一方面没有意义,一方面不会通过编译——JVM只会从头开始找到第一个符合范围的异常处理块。

不处理异常——duck it

让调用方法的程序来catch异常,而不是把调用放在try/catch块中。
做法:即表示你还会丢出这个异常,即方法声明会丢出异常
过程:方法抛出异常,立即从栈中取出;丢给栈顶方法,若此时栈顶方法(调用方)是ducker,又会被取出,继续把异常丢给栈

若连Main都duck掉异常,会怎么样呢?以下是具体的例子!
在这里插入图片描述
在这里插入图片描述
注意运行期的异常不应该duck掉哦,应该可以通过修正程序逻辑避免!

总结

对于异常,两种处理方法
1.处理,try/catch
2.duck,声明
在这里插入图片描述

回到音乐播放程序

涉及这块的具体内容,就不多讲,大家有兴趣可以看书P339
在这里插入图片描述

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

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

相关文章

3d软件哪个适合新手学?3D动画渲染怎么好

在不同的行业领域,3D建模和动画的需求各异,因此所需的3D软件工具也会有所不同。对于刚开始接触3D设计的新手来说,软件的易操作性、丰富的学习资源以及与自己专业领域相关的功能是选择时的重要考虑因素。以下是几款适合初学者入门的3D软件推荐…

【第3节】“茴香豆“:搭建你的 RAG 智能助理

目录 1 基础知识1.1.RAG技术的概述1.2 RAG的基本结构有哪些呢?1.3 RAG 工作原理:1.4 向量数据库(Vector-DB ):1.5 RAG常见优化方法1.6RAG技术vs微调技术 2、茴香豆介绍2.1应用场景2.2 场景难点2.3 茴香豆的构建: 3 论文快读4 实践…

OpenHarmony网络协议通信—libevent [GN编译] - 事件通知库

libevent主要是用C语言实现了事件通知的功能 下载安装 直接在OpenHarmony-SIG仓中搜索libevent并下载。 使用说明 以OpenHarmony 3.1 Beta的rk3568版本为例 库代码存放路径:./third_party/libevent 修改添加依赖的编译脚本 在/developtools/bytrace_standard/…

java反序列化之URLDNS链学习

一、前言 近来学习java反序列化,听p神所说这个URLDNS利用链比较好理解,故决定由此进入学习的第一篇。 URLDNS是Java反序列化中比较简单的一个链,由于URLDNS不需要依赖第三方的包,同时不限制jdk的版本,所以通常用于检…

【SpringBoot整合系列】SpringBoot整合Mybatis

目录 前期回顾MyBatis简介特点 持久化(Persistence)什么是持久化 ORM(Object Relational Mapping)ORM解决方案包含下面四个部分ORM解决方案经典面试题:MyBatis与Hibernate区别 Springboot整合MyBatis1.新建工程&#x…

记录一下线上卡夫卡rebalanced的原因

记录一下线上卡夫卡rebalanced的原因,以及排查过程,我们线上使用的版本是0.10.1.1,rebalanced就是重平衡,触发重平衡的原因如下: 消费者组内成员发生变更,这个变更包括了增加和减少消费者。注意这里的减少有…

UI自动化测试框架:PO 模式+数据驱动(超详细)

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 1、PO 设计模式简介 什么是 PO 模式? PO&#xff…

vue2实现字节流byte[]数组的图片预览

项目使用vantui框架&#xff0c;后端返回图片的字节流byte[]数组&#xff0c;在移动端实现预览&#xff0c;实现代码如下&#xff1a; <template><!-- 附件预览 --><div class"file-preview-wrap"><van-overlay :show"show"><…

调试 WebSocket API 技巧分享

WebSocket 是一种在单个 TCP 连接上实现全双工通信的先进 API 技术。与传统的 HTTP 请求相比&#xff0c;WebSocket 提供了更低的延迟和更高的通信效率&#xff0c;使其成为在线游戏、实时聊天等应用的理想选择。 开始使用 Apifox 的 WebSocket 功能 首先&#xff0c;在项目界…

阿里云操作日记

昨天买了一个超级便宜的阿里云服务器&#xff0c;2核2G&#xff0c;3M固定带宽&#xff0c;40G ESSD Entry云盘&#xff0c;搭载一个简单的系统&#xff0c;就想到了docker轻量级&#xff0c;易于管理 其实docker很好用&#xff0c;第一步就是安装docker 一、docker安装与端口…

解决在服务器中减少删除大文件夹耗时太久的问题

在数据驱动的现代商业环境中&#xff0c;企业对服务器的高效运作有着极高的依赖性。然而&#xff0c;IT管理员们常常面临一个棘手的问题&#xff1a;删除服务器上的大型文件夹过程缓慢&#xff0c;这不仅降低了工作效率&#xff0c;还可能对用户体验造成负面影响。本文将介绍一…

【Linux】认识文件(三):缓冲区

【Linux】认识文件&#xff08;三&#xff09;&#xff1a;缓冲区 一.啥是缓冲区&#xff1f;二.缓冲区现象三.缓冲区的刷新方法四.缓冲区在哪&#xff1f;五.为什么要有缓冲区 一.啥是缓冲区&#xff1f; 缓冲区&#xff0c;官方说法就是&#xff1a;指的是一块用于临时存储数…

2739. 总行驶距离

思路 模拟一下即可&#xff0c;每次让 mainTank 减去 5 &#xff0c;然后如果 additionalTank 大于 0&#xff0c;就在让 mainTank 加 1&#xff0c;最后让 additionalTank 减 1。当不满足 mainTank - 5 > 0 && additionalTank > 0 时即退出。 class Solution { …

vue3.0项目中运用vant的以及移动端的适配

文章目录 概要移动端的适配vant的引入开发以及打包过程中遇到的问题 概要 在Vue-Vben-Admin项目中运用vant-ui实现部分页面支持手机端h5页面的预览 移动端的适配 适配的原理 自适应 根据不同的设备的屏幕大小来自动调整尺寸&#xff0c;大小响应式 会随着屏幕的变动而自动调整…

文末送资料|跟着开源学技术-ChatGPT开源项目-chatgpt-java

目录 功能特性 最简使用 进阶使用 函数调用&#xff08;Function Call&#xff09; 流式使用 流式配合Spring SseEmitter使用 多KEY自动轮询 大家好&#xff0c;我是充电君 今天带着大家来看个Java版本的ChatGPT。这个开源项目就是chatgpt-java。 Github&#xff1a; h…

gitcode 上传文件报错文件太大has exceeded the upper limited size

报错 remote: Start Git Hooks Checking Error: Deny by project hooks setting ‘default’ has exceeded the upper limited size (10 MB) in commit 当前有效的解决方案 项目设置->提交设置->勾选管理员不受规则限制->提交 重新push&#xff0c;提交成功

计算机提示dll文件缺失如何恢复?多种方法快速一键修复dll问题

动态链接库&#xff08;DLL&#xff09;是Windows操作系统中不可或缺的一部分&#xff0c;它们封装了大量的函数、类和资源&#xff0c;供多个应用程序共享使用&#xff0c;以实现功能复用、节省内存和简化软件部署。然而&#xff0c;在日常使用或软件开发过程中&#xff0c;我…

pycharm爬虫模块(scrapy)基础使用

今天学了个爬虫。在此记录 目录 一.通过scrapy在命令行创建爬虫项目 二.判断数据为静态还是动态 三.pycharm中的设置 三:爬虫主体 四.pipelines配置&#xff08;保存数据的&#xff09; 五.最终结果 一.通过scrapy在命令行创建爬虫项目 1.首先需要在cmd中进入到python文…

MySQL——运维

日志 错误日志 错误日志是 MySQL 中最重要的日志之一&#xff0c;它记录了当 mysqld 启动和停止时&#xff0c;以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时&#xff0c;建议首先查看此日志。 查看日志位置&#xff1a; sho…

招商画册不会制作?这个教程收藏好

在制作招商画册过程中可能对于一些小型企业或刚刚起步的企业来说&#xff0c;招商画册的制作也不是一个难以克服的难题。本文将为您提供一些制作招商画册的技巧和建议。在制作招商画册前肯定是需要选择一款合适的在线制作工具&#xff0c;如FLBOOK 这个平台本就有海量的模板和设…