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

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
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何看待AIGC技术

文章目录 前言如何看待AIGC技术AIGC可以应用到哪些领域 欢迎来到 请回答1024 的博客 🍓🍓🍓欢迎来到 请回答1024的博客 关于博主: 我是 请回答1024,一个追求数学与计算的边界、时间与空间的平衡,0与1的延伸…

Games101-相机与透镜

成像:光栅化成像(上图)和光线追踪成像(下图) 都是用合成的方法来成像。还可以用捕捉的方法来成像 利用小孔成像原理制作的相机就是针孔相机 如果一个相机没有针孔/透镜,是无法拍照的。 因为任何一个点都有可能收集到来自不同方向上的光。这个点本身作为…

telnet 退出失败ctrl+c

1. 使用ctrl] ,退出到telnet >界面 2. quit 或者 3. 直接强制退出: ] Enter键

第十五届蓝桥杯省赛第二场C/C++B组F题【狡兔k窟】题解(AC)

题意分析 有一个 n n n 个点, n − 1 n-1 n−1 条边的无向图,边权均为 1 1 1。 每个点隶属于一个集合,同一个集合的点可以互相传送。 给定 m m m 个询问,求 x , y x, y x,y 的最短距离。 最短路解法 步骤: 建…

探索数学语言模型的前沿进展——人工智能在数学教育和研究中的应用

数学一直被认为是科学的基石,对于推动技术进步和解决现实世界问题具有重要意义。然而,传统的数学问题解决方式正面临着数字化转型的挑战。MLMs的出现,预示着数学学习和研究方式的一次革命。 MLMs,包括预训练语言模型(…

黑马-设计模式-笔记(未完)

一、基础 UML类图 可见性: public- private#protected 表示方式:属性:可见性 名称:类型[默认值]方法:可见性 名称(参数)[:返回类型] 关系:关联关系:实线,引用关系,类属性里有另一个…

CUDA的应用场景

CUDA的应用场景随着技术的发展不断扩展,其核心优势在于能够显著提高并行计算任务的处理速度,这对于任何需要处理大量数据和执行复杂计算的领域都是极其有价值的。CUDA开发的应用场景非常广泛,主要得益于其强大的并行计算能力,以下…

【软考】UML中的关系

目录 1. 说明2. 依赖3. 关联4. 泛化5. 实现 1. 说明 1.UML中有4种关系:依赖、关联、泛化和实现2.这 4种关系是 UML,模型中可以包含的基本关系事物。它们也有变体,例如,依赖的变体有精化、跟踪、包含和延伸 2. 依赖 1.依赖(Dependency)。2.…

代码随想录刷题随记27-贪心1

代码随想录刷题随记27-贪心 455.分发饼干 leetcode链接 class Solution {public int findContentChildren(int[] g, int[] s) {//boolean used[]new boolean [s.length];Arrays.sort(s);Arrays.sort(g);int index0;int ret0;for(int i0;i<g.length;i){while(index<s.…

MySQL--表的操作

目录 创建表 查看表结构 修改表 新增列 修改列类型 修改列名 修改表名&#xff1a; 删除列 删除表 创建表 语法&#xff1a; CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引…

【Entity Framework】聊一聊EF如何使用数据库函数

【Entity Framework】聊一聊EF如何使用数据库函数 文章目录 【Entity Framework】聊一聊EF如何使用数据库函数一、数据库函数的类型二、内置函数与用户定义的函数四、聚合函数、标量函数和表值函数五、Niladic函数六、EF Core 中的数据库函数映射6.1 内置函数映射6.2 EF.Functi…

请编写一个函数void fun(char*ss),其功能是:将字符串ss中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法完整代码和详细的解析。 题干 请编…

mPEG-Dansyl,Methoxy PEG Dansyl由甲氧基-聚乙二醇(mPEG)和丹磺酰氯(Dansyl)两部分组成

【试剂详情】 英文名称 mPEG-Dansyl&#xff0c;Methoxy PEG Dansyl 中文名称 聚乙二醇单甲醚丹磺酸酯&#xff0c;甲氧基-聚乙二醇-丹磺酰胺 外观性状 由分子量决定&#xff0c;液体或者固体 分子量 0.4k&#xff0c;0.6k&#xff0c;1k&#xff0c;2k&#xff0c;3.4k…

Fisher 准则分类

目录 一、什么是Fisher 准则 二、具体实例 三、代码实现 四、结果 一、什么是Fisher 准则 Fisher准则&#xff0c;即Fisher判别准则&#xff08;Fisher Discriminant Criterion&#xff09;&#xff0c;是统计学和机器学习中常用的一种分类方法&#xff0c;由统计学家罗纳…

JuliaImages教程(二):图像分割

1、介绍 图像分割是将图像划分为具有相似属性的区域的过程。图像分割具有多种应用&#xff0c;例如医学图像分割、图像压缩&#xff0c;并用作对象检测和光流等更高级别视觉任务中的预处理步骤。该包是用 Julia 编写的图像分割算法的集合。 2、安装 Pkg.add("ImageSegm…

软件测试面试题(二)

Web 测试.web 测试描述用浏览器访问 www.baidu.com 的过程以京东首页为例&#xff0c;设计用例框架。&#xff08;注意框架设计逻辑&#xff0c;区域划分&#xff0c;专项测试等&#xff0c;不需 要详细用例&#xff0c;需要查看 PC 可直接和辨识管提要求&#xff09;如何测试购…

Java Web 网页设计(1)

不要让追求之舟停泊在幻想的港湾 而应扬起奋斗的风帆 驶向现实生活的大海 网页设计 1.首先 添加框架支持 找到目录右键添加 找到Web Application选中 点击OK 然后 编辑设置 找到Tomcat--local 选中 点击OK 名称可以自己设置 找到对应文件夹路径 把Tomcat添加到项目里面 因为…

C++之通俗易懂学模版

目录 一、了解什么是泛性编程 二、模版 1.函数模版 1.1 函数模板概念 1.2 函数模板格式 1.3 函数模板的原理 1.4 函数模板的实例化 1.5 模板参数的匹配原则 2.类模板 2.1 类模板的定义格式 2.2 类模板的实例化 3. 非类型模板参数 4. 模板的特化 4.1 概念 4.2 …

Visual Studio调试C/C++指南

1. 前言 Visual Studio&#xff08;VS&#xff09;是微软开发的一款集成开发环境(IDE)软件&#xff0c;支持C/C、C#、VB、Python等开发语言&#xff0c;开发桌面、Web等应用程序。VS功能极其强大&#xff0c;使用极其便利&#xff0c;用户数量最多&#xff0c;被誉为"宇宙…

Python 基础 (Pandas):Pandas 入门

1. 官方文档 API reference — pandas 2.2.2 documentation 2. 准备知识&#xff1a;Pandas 数据结构 Series & DataFrame 2.1 Series 2.1.1 创建 Series 类型数据 一个 Series 对象包含两部分&#xff1a;值序列、标识符序列。可通过 .values (返回 NumPy ndarry 类型…