Java复习二—CH3-Exception 、CH4-I/O

CH3 Java Exception (异常)

3.1 Exception(异常)和 Error(错误)

异常能被程序本身可以处理,错误是无法处理
大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM 出现的问题

异常发生的原因有很多,通常包含以下几大类:

  • 用户输入了非法数据。
  • 要打开的文件不存在。
  • 网络通信时连接中断,或者JVM内存溢出。

    用操作系统的话来说,异常就是进程发生了中断。(?自己的理解)

3.2 Exception 类的层次

      所有的异常类是从 java.lang.Exception 类继承的子类。  
      Error 用来指示运行时环境发生的错误。
      例如,JVM 内存溢出。一般地,程序不会从错误中恢复。

3.3 Java内置异常类(看看就行,了解一下)

3.4 捕获异常

使用 try 和 catch 关键字可以捕获异常。try/catch 代码块放在异常可能发生的地方。

try/catch代码块中的代码称为保护代码。

Catch 语句包含要捕获异常类型的声明。当保护代码块中发生一个异常时,try 后面的 catch 块就会被检查。如果发生的异常包含在 catch 块中,异常会被传递到该 catch 块,这和传递一个参数到方法是一样。

下面举个例子:

小练习:猜一下结果?finally关键字

3.5 多重捕获块

一个try块后面跟了多个catch块:抛出的异常会依次跟catch块中的异常类型进行匹配

like this:

可以在 try 语句后面添加任意数量的 catch 块。

如果保护代码中发生异常,异常被抛给第一个 catch 块。

如果抛出异常的数据类型与 ExceptionType1 匹配,它在这里就会被捕获。

如果不匹配,它会被传递给第二个 catch 块。

如此,直到异常被捕获或者通过所有的 catch 块。

注:

       重写方法一定不能抛出新的检査异常或者比被重写方法声明更加宽泛的检査型异常。 (子类异常不能抛出父类异常)Exception是所有异常类的父类,所有catch块中都不能抛出Exception异常。 例如,父类
的一个方法声明了一个检査异常 IOException ,在重写这个方法时就不能抛出 Exception ,只能拋
IOException 的子类异常,可以抛出非检査异常。

小练习:(多重catch块中,异常的抛出。catch块中只能抛出子异常)d

3.6 throw/throws关键字和finally关键字

(1)throw 关键字用于在当前方法中抛出一个异常。throws 关键字用于在方法声明中指定该方法可能抛出的异常。

throws关键字可以同时抛出多个异常

(2)finally关键字

finally 关键字用来创建在 try 代码块后面执行的代码块。

无论是否发生异常,finally 代码块中的代码总会被执行。

在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。

finally 代码块出现在 catch 代码块最后。在try块中执行return语句时, finally块 中的代码仍然会被执行

补充:正则表达式(自己了解一下,挺有用的)

CH4  Java   I/O

4.1 Java  流(Stream)、文件(File)、I/O

一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。

4.2 读取控制台输入

Java 的控制台输入由 System.in 完成。

为了获得一个绑定到控制台的字符流,你可以把 System.in 包装在一个 BufferedReader 对象中来创建一个字符流。这样我们就可以随时随地得到控制台输入(虽然scanner也可以)

补充:BufferedReader 的read()函数是从流中读取一个字符,readline函数是读取一行字符

4.3 在控制台进行输出

这个大家应该都很熟悉了,不就System.out,println()吗。

大家有没有想过这几个字都是什么呢?

System就不多说了,Java.lang中的静态类

out:  JAVA .lang 包中的一个 PrintStream变量,继承于OutputStream

println : IO包中的一个函数

4.4 读写文件

(1)先来看一眼 I/O流的主要类

(2)小练习:字节流和字符流的区别

区分下Writer 和OutputStream以及Reader和InputStream

(3)接下来主要区分一下:FileInputStream、BufferedInputStream、DataInputStream。额,这是当初学习时写的代码。把write和OutputStream弄混了

  •  创建:仅就创建对象来看,三者之间是前后依赖的,但这并不意味着三者之间是父子类关系

当数据量增大时三者效率,依次增高。但是注意要提前设置JVM的内存较大。否则BufferWriter的效率会因为内存不足受到较大影响。

3.1FileOutputStream
首先我们先来看FileOutputStream,继承于OutputStream,然后写了一堆构造方法。常用的方法也就writer()

​​​​​​​

3.2BufferedOutputStream

接着是BufferedOutputStream。BufferedOutputStream继承于FilterOutputStream。所以它喊FileOutputStream应该是喊“叔叔”的

新建对象的话,如果去直接new一个“爷爷”对象的话,需要重写“爷爷”的方法。但是借他叔的属性的话就不算继承?就不需要重写方法了???(这一段还不是很懂)

3.3DataOutputStream

最后是DataOutputStream,

这个跟BufferedOutputStream是好兄弟,但是他实现了dataOutout的接口

PrintWriter(继承于Writer)(这个到第十一章再讲)

4.5 Java中的目录

(1)创建目录

(2)读取目录

注意,这里可以直接对 file文件进行排序,使用 Array.sort,比较器使用Collections.Order();

本篇文章参考:(1)菜鸟教程;

                          (2)课程PPT

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

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

相关文章

电子科大软件系统架构设计——软件建模详细设计

文章目录 软件建模详细设计概述软件建模详细设计目标软件建模详细设计原则开闭原则里氏 (Liskov) 替换原则依赖倒置原则接口分离原则单一职责原则最少知识原则(迪米特法则)高内聚原则松耦合原则可重用原则 软件建模详细设计内容 UML 软件静态结构视图建模…

现代控制理论-李雅普诺夫

现代控制理论-李雅普诺夫 单输入单输出系统(BIBO)的系统函数如下: 则,该系统的能控标准型(能空性)为: 能观性: 李雅普诺夫下的稳定性: 李雅普诺夫下的渐进稳定性&a…

Ubuntu20.04纯命令配置PCL(点云库)

Ubuntu20.04纯命令配置PCL(点云库) 最近在学习点云库(PCL)的使用,第一步就是在自己的电脑安装配置PCL。 首先,对于ubuntu 16.04以上版本,可以直接使用命令进行安装,新建好一个文件夹…

小程序radio单选框回显

话不多说&#xff0c;效果图如下&#xff1a; 具体代码如下&#xff1a; <radio-group name"radio" bindchange"getSex"><label><radio value"1" checked"{{xingbie1}}" />男</label><label><radio…

Python序列之元组

系列文章目录 Python序列之列表 Python序列之元组 系列文章目录前言一、元组是什么&#xff1f;二、元组操作1.元组的创建&#xff08;1&#xff09;通过()创建。小括号可以省略。&#xff08;2&#xff09;通过tuple()函数创建。&#xff08;3&#xff09;通过生成器推导式创…

HBase 集群搭建

文章目录 安装前准备兼容性官方网址 集群搭建搭建 Hadoop 集群搭建 Zookeeper 集群解压缩安装配置文件高可用配置分发 HBase 文件 服务的启停启动顺序停止顺序 验证进程查看 Web 端页面 安装前准备 兼容性 1&#xff09;与 Zookeeper 的兼容性问题&#xff0c;越新越好&#…

ubuntu docker 进入容器内使用ping 指令,提示bash: ping: command not found问题

解决方法 #更新软件列表 apt update #安装 ping 工具iputils-ping apt install -y iputils-ping #最后使用ping一下容器ping 172.18.0.3欢迎关注我的公众号“点滴分享技术猿”&#xff0c;原创技术文章第一时间推送。

WT2605C音频蓝牙语音芯片:单芯片实现蓝牙+MP3+BLE+电话本多功能应用

在当今的电子产品领域&#xff0c;多功能、高集成度成为了一种趋势。各种产品都需要具备多种功能&#xff0c;以满足用户多样化的需求。针对这一市场趋势&#xff0c;唯创知音推出了一款集成了蓝牙、MP3播放、BLE和电话本功能的音频蓝牙语音芯片——WT2605C&#xff0c;实现了单…

超维空间S2无人机使用说明书——21、VINS视觉定位仿真

引言&#xff1a;为了实现室内无人机的定位功能&#xff0c;S系列无人机配置了VINS-FUSION定位环境&#xff0c;主要包含了仿真跑数据集和实际操作部分。为了提前熟悉使用原理&#xff0c;可以先使用仿真环境跑数据集进行学习和理解 硬件&#xff1a;1080P显示器、Jetson orin…

博弈论:理解决策背后的复杂动态

1.基本概念 博弈论是一门研究具有冲突和合作元素决策制定的数学理论。它不仅适用于经济学&#xff0c;还广泛应用于政治学、心理学、生物学等领域。博弈论的核心在于分析参与者&#xff08;称为“玩家”&#xff09;在特定情境下的策略选择&#xff0c;以及这些选择如何影响最…

真实工作中,做接口测试的流程一般是怎么样的?一定要学透彻

在讲接口流程测试之前&#xff0c;首先需要给大家申明下&#xff1a;接口测试对于测试人员而言&#xff0c;非常非常重要&#xff0c;懂功能测试接口测试&#xff0c;就能在企业中拿到一份非常不错的薪资。 这么重要的接口测试&#xff0c;一般也是面试笔试必问。为方便大家更…

界面控件DevExpress WinForms PDF Viewer,让应用轻松显示PDF文档(一)

DevExpress WinForms的PDF Viewer&#xff08;查看器&#xff09;控件使用户可以轻松地在Windows应用程序中直接显示PDF文档&#xff0c;而无需在最终用户的机器上安装外部PDF阅读器。 DevExpress WinForms有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业…

【贪心】最小生成树Kruskal算法Python实现

文章目录 [toc]问题描述最小生成树的性质证明 Kruskal算法时间复杂性Python实现 个人主页&#xff1a;丷从心 系列专栏&#xff1a;贪心算法 问题描述 设 G ( V , E ) G (V , E) G(V,E)是无向连通带权图&#xff0c; E E E中每条边 ( v , w ) (v , w) (v,w)的权为 c [ v ] …

听GPT 讲Rust源代码--src/tools(24)

File: rust/src/tools/clippy/clippy_lints/src/types/borrowed_box.rs 在Rust源代码中的rust/src/tools/clippy/clippy_lints/src/types/borrowed_box.rs文件是Clippy项目的一个规则&#xff0c;用于检查可能是误用或错误的Box引用情况。 Rust中的Box是一个堆分配的值的所有权…

京东员工:35岁,我只是年龄大了,又不是傻了残疾了,为啥找不到与3-5年经验者平等的面试机会?...

* 你好&#xff0c;我是前端队长&#xff0c;在职场&#xff0c;玩副业&#xff0c;文末有福利! 年龄大了&#xff0c;并不代表我们已经过时了。超过35岁的我们&#xff0c;面对着职场的冷风&#xff0c;经验丰富却常被误解。为什么年轻人能轻松得到的面试机会&#xff0c;到我…

【C语言刷题每日一题#牛客网BC68】——X形图案

问题描述 思路分析 首先根据输入的描述&#xff0c;多组输入需要将scanf放在循环中来实现 #include<stdio.h> int main() {int a 0;while (scanf("%d", &a) ! EOF){} } 完成了输入之后&#xff0c;再来分析输出——输出的是一个由“*”组成的对称的X形…

vue3项目 - 目录调整

省流 删除默认文件&#xff0c;修改代码 ---> 调整目录结构 ---> 添加全局样式和图片&#xff0c;安装预处理器 具体步骤&#xff1a; 1. 删除初始化的默认文件&#xff0c;修改剩余代码 清空 assets、components、stores、views文件夹里的文件&#xff0c;仅留核心文件…

【数据结构】布隆过滤器原理详解及其代码实现

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推荐--…

神经网络:深度学习优化方法

1.有哪些方法能提升CNN模型的泛化能力 采集更多数据&#xff1a;数据决定算法的上限。 优化数据分布&#xff1a;数据类别均衡。 选用合适的目标函数。 设计合适的网络结构。 数据增强。 权值正则化。 使用合适的优化器等。 2.BN层面试高频问题大汇总 BN层解决了什么问…

智能优化算法应用:基于食肉植物算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于食肉植物算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于食肉植物算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.食肉植物算法4.实验参数设定5.算法结果6.…