异常处理与 io流

本文探讨了如何通过异常处理机制增强程序的容错性,以及Java I/O编程的基础概念,包括流的分类、节点流与过滤流的应用,重点讲解了异常的分类、抛出和捕获,以及I/O操作中的文件流和try-with-resources的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异常处理与 io流

异常处理

提高程序的容错性 : 解决运行时错误
避免异常: 尽可能使异常不出现, 不发生
处理异常: 当异常发生时, 应对这种异常 有部分代码,正常情况不执行,异常发生时才执行
异常的分类
Throwable 所有异常的父类
|- Error 错误 严重的底层错误 不可避免 无法处理 不用处理
|- Exception 异常 可以处理
|- RuntimeException 子类 运行时异常 未检查异常 可以避免 可以处理,可以不处理
|- 非RuntimeException子类 已检查异常 不可避免 必须处理
在这里插入图片描述
异常对象的产生和传递
异常对象的产生:
throw 异常对象;
抛出一个异常
抛出异常: 方法以异常对象作为返回值,返回 等同于return语句
异常对象的传递:
沿着方法调用链, 以返回值的形式, 逐级回传,直至JVM. JVM就会中止运行
异常的处理
1.声明抛出
throws 异常类名1 , 异常类名2 , … 异常类名n
方法覆盖时 , 子类方法不能比父类抛出更多的异常
2.捕获异常:

try {
	语句1 
	语句2 
	... 
	语句n
 }
 catch(异常类型A e){ 
 }
 catch(异常类型B e){
  }
 finally{ 无论如何都会执行 通常用来释放资源
   }
   ...

可以同时捕获父类异常和子类异常, 但必须先捕获子类异常, 再捕获父类异常

try{} catch(){}
try{} catch(){} finally{}
try{} finally{} //无法捕获异常, 利用finally必须执行的特点, 完成特定操作

I/O编程

Java程序的输入和输出
流的概念和分类
流对象: 用来传输数据的对象
流的分类:
流的方向: 输入流 / 输出流 输入流: 读数据 输出流: 写数据
数据单位: 字节流 / 字符流 字节流: 以字节为单位 处理一切数据
字符流: 以字符为单位 处理文本数据 (.txt .html .java .xml)
流的功能: 节点流 / 过滤流
节点流: 实际负责数据传输
过滤流: 为节点流增强功能
在这里插入图片描述
字节流:
InputStream/OutputStream 抽象类 字节流的父类
FileInputStream/FileOutputStream 文件字节流 节点流

OutputStream os = null; 
try {
	 os = new FileOutputStream("a.txt") ;
	 os.write('D');
}
catch (IOException e) { 
	e.printStackTrace(); 
}
finally{ 
	try {
	if (os!= null) os.close(); //关闭流
 }
  catch (IOException e) {
  e.printStackTrace();
   }
 }
try - with - resource 
 try (定义资源 实现了AutoCloseable接口){ 代码 } 
  catch(Exception e){} 
 try (OutputStream os = new FileOutputStream("a.txt"))
 {
  os.write('D');
 }
 catch(IOException e){
    e.printStackTrace();
 }

BufferedInputStream/BufferedOutputStream 过滤流 缓冲功能, 提高I/O效率
flush() 清空缓冲区 对于缓冲输出流 BuffedOutputStream
PrintStream : 取代BufferedOutputStream 带缓冲的字节输出流

FileOutputStream fos = new FileOutputStream("a.txt");
BufferedOutputStream out = new BufferedOutputStream(fos); 
out.write('A'); 
out.close();

I/O编程基本顺序:

  1. 创建节点流
  2. 封装过滤流
  3. 读/写数据
  4. 关闭外层流

学得有点慢了,需要加快速度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值